WSL 2 백엔드
WSL 2 백엔드
WSL(Windows Subsystem for Linux) 2는 Microsoft가 만든 완전한 Linux 커널로, 가상 머신을 관리하지 않고도 Linux 배포판을 실행할 수 있게 해줘요. Docker Desktop이 WSL 2에서 실행되면 Linux 워크스페이스를 활용할 수 있고, Linux와 Windows 빌드 스크립트를 따로 유지보수하지 않아도 돼요. 또한 WSL 2는 파일시스템 공유 개선, 더 빠른 콜드 스타트, 동적 리소스 할당을 제공해요.
출처: WSL 2 backend
본문
WSL 2는 동적 메모리 할당을 사용하기 때문에 Docker Desktop은 실제로 필요한 CPU와 메모리만 요청해요. 그래서 멀티 스테이지 이미지 빌드 같은 메모리 집약적 작업을 최대 속도로 실행하면서도 시스템의 나머지에 리소스를 비워줘요.
사전 요구 사항
Docker Desktop WSL 2 기능을 켜기 전에 다음이 필요해요.
- 최소 WSL 버전 2.1.5, 가능하면 최신 WSL 버전 (Docker Desktop이 예상대로 동작하지 않는 문제를 피하려면).
- Docker Desktop for Windows의 시스템 요구 사항 충족.
- Windows에 WSL 2 기능 설치. 자세한 지침은 Microsoft 문서 참고.
팁: WSL 1.3.10부터 사용 가능한(실험적)
autoMemoryReclaimWSL 설정을 활성화해 보세요. 이 설정은 Windows가 WSL 가상 머신에서 사용하지 않는 메모리를 회수하게 해서, 컨테이너 이미지 빌드가 끝난 후 Linux 커널의 페이지 캐시가 많은 RAM을 붙잡고 있지 않게 해줘요. 그 결과 호스트의 다른 애플리케이션이 더 나은 메모리 가용성을 얻어요.
Docker Desktop WSL 2 켜기
Docker Desktop을 설치하기 전에 WSL Linux 배포판 안에 직접 설치된 Docker Engine이나 Docker CLI 버전을 제거하세요. 둘 다 실행하면 충돌이 생길 수 있어요.
- Windows용 Docker Desktop을 설치해요.
- 설치 중 Docker Desktop이 WSL 2를 켜라고 안내할 수 있어요. 화면의 정보를 읽고 WSL 2 기능을 켜서 계속 진행해요.
- Windows 시작 메뉴에서 Docker Desktop을 시작해요.
- Settings 로 이동해요.
- General 탭에서 Use WSL 2 based engine 을 선택해요. WSL 2를 지원하는 시스템에 설치했다면 이 옵션은 기본으로 켜져 있고 설정이 보이지 않아요.
- Apply 를 선택해요.
이제 WSL 2 엔진을 사용하는 어떤 Windows 터미널에서든 docker 명령을 사용할 수 있어요.
팁: 기본적으로 Docker Desktop은 WSL 2 엔진의 데이터를
C:\Users\[USERNAME]\AppData\Local\Docker\wsl에 저장해요. 위치를 바꾸려면 Docker Dashboard의Settings -> Resources -> Advanced페이지로 가면 돼요.
WSL 2 배포판에서 Docker 활성화하기
WSL 2는 하나의 공유 커널에서 여러 Linux 배포판을 나란히 실행하게 해줘요. Docker Desktop은 특정 배포판이 설치되어 있어야 하지 않고, docker 명령은 배포판이 없어도 Windows에서 동작해요. 하지만 배포판에 대해 WSL 통합을 활성화하면 그 배포판의 터미널에서 docker 명령에 직접 접근할 수 있어요. 이는 Linux 네이티브 개발 워크플로에 유용해요.
- 배포판이 WSL 2 모드로 실행 중인지 확인해요. WSL은 v1 또는 v2 모드로 배포판을 실행할 수 있어요. WSL 모드를 확인하려면:
$ wsl.exe -l -v
Linux 배포판을 v2로 업그레이드하려면:
$ wsl.exe --set-version (distribution name) 2
향후 설치에 v2를 기본 버전으로 설정하려면:
$ wsl.exe --set-default-version 2
- Docker Desktop이 시작되면 Settings > Resources > WSL Integration으로 이동해요. Docker-WSL 통합은 기본 WSL 배포판(기본값 Ubuntu)에서 활성화돼요. 기본 WSL 배포판을 바꾸려면:
$ wsl.exe --set-default
Resources 아래에 WSL Integration이 없다면 Docker가 Windows 컨테이너 모드일 수 있어요. 작업 표시줄에서 Docker 메뉴를 선택하고 Switch to Linux containers 를 선택해요.
- Apply 를 선택해요.
Docker Desktop의 WSL 2 보안
Docker Desktop의 WSL 2 통합은 WSL의 기존 보안 모델 안에서 동작하며 표준 WSL 동작 이상의 보안 위험을 도입하지 않아요.
Docker Desktop은 자체 docker-desktop WSL 배포판 안에서 실행되고, 다른 배포판과는 두 WSL 배포판이 서로 격리되는 것과 같은 방식으로 격리돼요. Docker Desktop과 다른 배포판 간 상호작용은 그 배포판에 대해 WSL 통합을 명시적으로 활성화할 때만 일어나요.
WSL은 Windows와 Linux 환경 간 상호운용을 돕도록 설계됐어요. 그 파일시스템은 Windows 호스트의 \\wsl$에서 접근할 수 있어서, Windows 프로세스가 WSL 안의 파일을 읽고 수정할 수 있어요. 이 동작은 Docker Desktop에만 특정한 것이 아니라 WSL 자체의 핵심 측면이에요.
더 엄격한 격리가 필요한 환경에서는:
- 공유 커널 모델을 완전히 피하려면 WSL 2 대신 Hyper-V 모드로 Docker Desktop을 실행해요.
- 백엔드와 무관하게 컨테이너 워크로드에 보호 레이어를 추가하려면 Enhanced Container Isolation을 활성화해요.
추가 리소스
- 모범 사례 살펴보기
- Docker와 WSL 2로 개발하는 방법 이해하기
- WSL 2에서 GPU 지원에 대해 배우기
- WSL 커스텀 커널