이 출시되었습니다! 11월의 새로운 기능 및 수정 사항을 읽어보세요.

WSL 2에서 Docker 사용하기

2020년 3월 2일 Matt Hernandez, @fiveisprime

지난 6월, Docker 팀은 WSL(Windows Subsystem for Linux)에서 Docker를 실행하기 위해 노력할 것이라고 발표했습니다. 이 모든 것은 WSL 아키텍처의 최근 변경 덕분에 가능해졌으며, WSL은 가벼운 가상 머신(VM) 내에서 실행됩니다. 이에 대해서는 이전 WSL 2에 대한 블로그 게시물에서 다루었습니다. 이 발표 이후 Docker 팀은 WSL 2와 함께 실행하는 지원을 포함하는 Docker 기술 미리보기를 출시했습니다.

이 문서는 Docker Desktop 기술 미리보기가 어떻게 작동하는지와 기술 미리보기와 함께 Docker 확장을 사용하는 방법을 설명합니다.

작동 방식

이 새로운 Docker 아키텍처는 Visual Studio Code의 WSL 원격 개발 지원과 매우 유사하게 작동합니다. 호스트 컴퓨터에서 실행되는 Docker CLI는 원격 WSL VM에서 실행되는 Docker 통합 패키지 내에서 명령을 실행합니다.

Docker in WSL 2

이미지 출처: Docker Engineering

DockerD는 WSL 내에서 직접 실행되므로 Hyper-V VM이 필요 없으며, 모든 Linux 컨테이너는 Windows의 Linux 사용자 공간에서 실행되어 성능과 호환성이 향상됩니다.

설정하기

먼저 몇 가지 사전 요구 사항

설치 후 Docker는 WSL이 설치되어 있음을 인식하고 WSL 통합을 활성화할 것인지 묻습니다. 이 튜토리얼에서는 WSL 통합 사용을 선택합니다.

Docker Desktop WSL integration dialog

이 옵션을 사용하면 Linux 배포판 내에서 Docker CLI를 통해 Docker Desktop에 직접 액세스할 수 있습니다.

여러 Linux 배포판이 있는 경우 Docker 설정에서 올바른 배포판에 대해서만 WSL 통합이 켜져 있는지 확인하십시오.

Docker settings dialog

이렇게 구성하면 모든 명령이 Linux 컨텍스트에서 실행됩니다. PowerShell에서 실행하는 Docker 명령도 마찬가지입니다. 따라서 docker run mongo…와 같은 명령은 WSL VM 내에서 Linux 컨테이너를 시작합니다.

docker run mongo command

WSL에서 docker ps 명령을 실행하면 예상대로 컨테이너가 표시됩니다. 컨테이너 ID가 일치하는지 확인하십시오.

docker ps command in WSL

VS Code 사용하기

이렇게 설정하고 실행하면 VS Code Docker 확장을 설치하고 컨테이너에 액세스할 수 있습니다. 이미 WSL 2와 WSL 확장을 사용하고 있다면, 컨테이너가 필요할 때 컨텍스트를 전환하는 대신 Docker를 WSL 워크플로우에 통합하는 데 도움이 됩니다. 또한 Docker CLI의 컨텍스트가 WSL의 DockerD를 사용하도록 설정되어 있으므로, WSL 확장을 사용하여 VS Code를 열었는지 여부에 관계없이 확장 기능은 컨테이너와 함께 작동합니다.

아래 스크린샷에서 보듯이, 저는 WSL에 연결되어 작업 중이며 선호하는 환경(Ubuntu의 zsh)에서 벗어나지 않고도 컨테이너를 빌드/실행하고 있습니다.

VS Code working with containers in WSL

테마: Noctis Sereno

저는 개인적으로 이 구성을 사용하여 컨테이너 실행 시간이 크게 향상되었음을 느꼈으며, 일반적인 개발 워크플로의 각 부분이 동일하게 유지됩니다. 또한 내 컴퓨터에 직접 설정하지 않고 특정 환경을 테스트하기 위해 WSL 내에서 Dev Containers 확장을 사용하고 있습니다.

여러분의 피드백을 원합니다

미리보기 소프트웨어를 사용하고 있다는 점을 명심하십시오. Windows Insiders 느린 링은 매우 안정적이지만, 몇 가지 문제가 발생할 수 있습니다. 예상대로 작동하지 않는 것을 발견하면 Windows의 피드백 도구를 통해 문제를 제기하십시오. Docker 관련 문제나 피드백은 Docker for Windows 저장소에 기록할 수 있습니다.

행복한 코딩 되세요!

Matt Hernandez, VS Code 프로그램 관리자 @fiveisprime

© . This site is unofficial and not affiliated with Microsoft.