Windows에서 Docker Desktop을 위한 WSL 2 모범 사례

Windows에서 Docker Desktop을 위한 WSL 2 모범 사례

이 페이지는 WSL 2를 사용해 Windows에서 Docker Desktop을 실행할 때의 권장 사항을 다뤄요. 버전 요구 사항과 파일시스템 성능을 포함해요.

출처: WSL 2 best practices for Docker Desktop on Windows

본문

WSL 최신 상태 유지하기

항상 최신 버전의 WSL을 사용하세요. 최소한 WSL 버전 2.1.5는 꼭 써야 해요. 그렇지 않으면 Docker Desktop이 예상대로 동작하지 않을 수 있어요. 또한 Enhanced Container Isolation을 사용하려면 WSL 버전 2.6 이상인지 확인하세요. ECI가 최소 Linux 커널 버전 6.3.0에 의존하고, WSL 2.6+는 Linux 커널 6.6을 번들로 제공하기 때문이에요. 테스트, 개발, 문서는 가장 새로운 커널 버전을 기준으로 해요. 오래된 WSL 버전은 다음을 일으킬 수 있어요.

  • Docker Desktop이 주기적으로 또는 업그레이드할 때 멈춤
  • SCCM으로 배포 실패
  • vmmem.exe가 모든 메모리를 소비
  • 네트워크 필터 정책이 특정 객체가 아니라 전역으로 적용
  • 컨테이너의 GPU 실패

바인드 마운트로 파일시스템 성능 최적화하기

파일을 바인드 마운트할 때 파일시스템 성능을 최대로 얻으려면, Linux 컨테이너에 바인드 마운트하는 소스 코드와 기타 데이터를 저장하세요. 예를 들어 Windows 파일시스템이 아니라 Linux 파일시스템에서 docker run -v :를 사용해요. Microsoft의 권장 사항도 참고할 수 있어요.

Linux 컨테이너는 원본 파일이 Linux 파일시스템에 저장되어 있을 때만 파일 변경 이벤트(inotify 이벤트)를 받아요. 예를 들어 일부 웹 개발 워크플로는 파일이 변경됐을 때 자동으로 리로드하기 위해 inotify 이벤트에 의존해요.

파일을 Windows 호스트 파일시스템에서 접근할 때보다 Linux 파일시스템에서 바인드 마운트할 때 성능이 훨씬 높아요. 그러므로 /mnt/c가 Windows에서 마운트된 docker run -v /mnt/c/users:/users는 피하세요. 대신 Linux 셸에서 docker run -v ~/my-project:/sources 같은 명령을 사용하세요. ~는 Linux 셸이 $HOME으로 확장해요.

CPU와 메모리 사용 제한하기

CPU나 메모리 사용이 걱정된다면 WSL 2 유틸리티 VM에 할당되는 메모리, CPU, 스왑 크기에 제한을 설정해요.

더 알아보기