WSL
WSL(Windows Subsystem for Linux)
- Microsoft가 개발한 Windows 운영 체제에서 Linux 환경을 가상 머신이나 듀얼 부팅 없이 직접 실행할 수 있게 해주는 호환성 계층
장점
- Ubuntu, Debian, Kali 등 다양한 Linux 배포판 설치 가능
- Linux 명령어와 애플리케이션을 자연스럽게 사용 가능
특징
- Linux 커널 호출을 Windows 시스템 호출로 변환하여 빠르고 효율적으로 Linux 환경을 제공함
용도
- Bash 스크립트 실행
- Linux용 개발
- 서버 테스트
WSL1과 WSL2 비교
- WSL1 : 빠른 부팅과 적은 리소스 사용, 윈도우와의 통합 작업에 적합
- WSL2 : 실체 Linux 커널 실행으로 더 나은 성능과 완전한 호환성 제공, WSL1에 비해 약간 더 높은 리소스 사용과 가상화 요구가 있음
| WSL1 | WSL2 | |
| 아키텍처 | Windows 커널 위에서 Linux 바이너리를 실행하는 번역 계층 방식 (별도의 가상 머신 없이 작동함) |
경량 가상 머신(VM) 내에서 실제 Linux 커널을 실행 |
| 성능 | 시스템 콜 번역 오버헤드가 있어 성능 제한이 있음 파일 I/O 속도가 느림 |
실제 커널을 사용해 시스템 콜을 직접 처리 파일 시스템 성능이 크게 개선되어 대용량 데이터 작업과 컨테이너 사용에 적합 |
| 시스템 콜 호환성 | 제한적(대부분의 시스템 콜 번역 필요) | 완전한 Linux 커널 사용으로 높은 호환성 |
| Docker 지원 | Docker 같은 커널 의존적 애플리케이션을 지원하지 않음 | Docker Desktop과 같은 컨테이너 기술을 완벽하게 지원 |
| 네트워킹 | 윈도우 네트워크 스택을 사용하여 네트워크 구성이 비교적 간단 | 가상화된 네트워크 인터페이스를 사용 약간의 네트워크 설정이 필요할 수 있음 |
| 파일 시스템 접근 | 윈도우 파일 시스템과 완벽하게 통합되어 윈도우 파일에 빠르게 접근 가능 | 향상된 성능의 리눅스 파일 시스템을 기본으로 함 윈도우 파일 시스템 접근 시 약간의 성능 저하가 있을 수 있음 |
| 시스템 요구 사항 | 가상화 지원이 필요 없음 | Hyper-V 기반으로 가상화 지원이 필요 |
| 부팅 속도 | 즉시 사용 가능 | 경량 VM이지만 부팅 속도 역시 빠름 |
WSL과 로컬호스트 연결
WSL과 Windows 로컬 호스트(localhost) 간 연결은 기본적으로 WSL2부터 통합되어 편리하게 사용 가능
Windows에서 실행 중인 서버를 WSL2에서 접속
- localhost 또는 127.0.0.1로 접속
WSL2에서 실행 중인 서버에 Windows 측에서 접근
- WSL2의 IP 주소 확인(WSL 터미널에서 ip addr show eth0 또는 hostname -I 입력해 확인)
- 확인한 IP 주소에 Windows에서 접근 가능하나 IP는 식별 후 변경될 수 있으므로 매번 확인 필요
WSL와 Docker 통합
장점
- WSL2의 고성능 가상화 기능을 활용하여 개발 환경을 효율적으로 구성하는데 매우 유용
단계
| No | 작업 | 내용 |
| 1 | WSL2 설치 및 활성화 | - Windows에서 WSL2를 사용하려면 먼저 WSL과 가상 머신 플랫폼을 활성화 - 관리자 권한으로 PowerShell을 열어 아래 명령어 실행 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart - Windows 재부팅 - 아래 명령어로 WSL2를 기본 버전으로 설정 wsl --set-default-version 2 |
| 2 | Linux 배포판 설치 | - Microsoft Store에서 원하는 Linux 배포판 설치 - 배포판 실행 및 초기 설정 완료 |
| 3 | Docker Desktop 설치 및 설정 | - Docker 공식 웹사이트에서 Docker Desktop for Windows 설치 설치 중 WSL2 사용 여부 선택 옵션 체크 - Docker Desktop 설정에서 "Use the WSL 2 based engine"을 활성화 - 아래 명령어로 WSL2 배포판이 Docker와 연동 wsl --list --verbose - 배포판이 Running 상태이고 버전이 2인지 확인 |
| 4 | Docker와 WSL 연동 | - WSL 배포판에서 Docker 명령어 사용 docker --version docker run hello-world |
| 5 | 추가 설정(선택 사항) | - WSL에 Docker CLI 바로 사용을 위해 환경변수 설정 가능 - 필요시, .bashrc 또는 .zshrc에 다음의 alias 추가 alias docker='docker.exe' |