윈도우 사용 가능 버전
Docker Desktop은 기본적으로 Hyper-V 기능을 사용하기 때문에 Windows 10 Pro 에디션에서만 사용할 수 있었습니다. Home 에디션에서는 Docker Toolbox(boot2docker)가 대안으로 이야기되곤 했었습니다만, 현재는 공식적으로 지원이 종료된 상태입니다.
희소식은 2020년 5월 Windows 10 May 2020 Update(20H1) 업데이트가 릴리스되면서 WSL2가 정식 릴리스 되었다는 점입니다. WSL2는 Windows 10 Home에서도 사용할 수 있으며 Docker Desktop의 발 빠른 지원으로 현재는 WSL2를 기반으로 Docker Desktop을 사용하는 것이 가능합니다. 정리하면 다음과 같습니다.
- Windows 10 Pro 에디션
- WSL2 기반 Docker Engine 사용 가능
- Hyper-V 기반 Docker Engine 사용 가능
- Windows 10 Home 에디션
- WSL2 기반 Docker Engine 사용 가능
WSL이란?
WSL은 Windows Subsystem for Linux 2의 줄임말로, 윈도우의 가상화 기능을 활용해서 윈도우 위에서 리눅스를 사용할 수 있게 해 줍니다. 단순히 가상 머신으로 리눅스를 사용할 수 있는 것이 아니라, 윈도우 시스템과 통합되어 마치 하나의 머신처럼 자연스럽게 리눅스를 활용하는 것이 가능합니다. 특히 기존 Windows 10 Home 에디션에서는 가상화 기능들을 지원하지 않아서 Docker Desktop을 사용할 수 없었는데, WSL2가 릴리스 되면서 Windows 10 Home 에디션에서도 Docker Desktop을 사용할 수 있게 되었습니다.
WSL 설치
cmd 창을 열어 wsl.exe --install을 사용하여 wsl을 설치합니다.
다음으로 WSL2 Linux 커널 업데이터를 진행해야 합니다.
아래 경로에서 파일을 다운로드하여 설치를 완료합니다.
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
윈도우 검색에서 Windows PowerShell을 마우스 오른쪽을 눌러 관리자 권한으로 실행합니다.
아래 명령어를 입력합니다.
WSL 관련 기능을 활성화 시켜줄 수 있습니다.
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism은 무엇일까? 위키에 설명된 내용을 찾아보았습니다.
다음으로 dism 명령어로 VirtualMachinePlatform 기능을 활성화 시킵니다.
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
기본적으로 사용할 WSL 버전을 2으로 변경해 줍니다.
wsl --set-default-version 2
Docker Desktop 다운로드 및 설치 방법
WSL2 준비가 끝났으니 이제 본격적으로 Docker Desktop을 설치해보겠습니다.
1. 다음 페이지로 이동해서 Download for Windows를 클릭해 Docker Desktop for Windows를 다운로드 받습니다. 여기서는 2021년 6월 현재 최신 버전인 3.5.1을 설치합니다(버전에 따라 조금 다를 수 있으나 설치 과정은 대동소이합니다).
Docker Desktop을 다운로드 합니다
2. 다운로드 받은 Docker Desktop Installer.exe를 실행하면 사용자 계정 컨트롤이 나타납니다. 설치를 진행하려면 ’예’를 클릭합니다.
설치를 계속하려면 사용자 계정 컨트롤 팝업에서 예를 클릭합니다
3. 안내에 따라 설치를 진행합니다. 설치 중간에 Configuration이 나타납니다. 둘 다 체크하고 설치를 진행합니다(첫 번째 옵션은 WSL 관련, 2번째 옵션은 바탕화면에 아이콘 추가할지 여부입니다).
설치 과정에서 필요한 Configuration을 진행합니다
4. Docker Desktop 설치가 진행됩니다. 몇 분 정도 시간이 걸리니 완료될 때까지 기다립니다.
Docker가 설치됩니다. 몇 분 정도 시간이 걸립니다
5. 설치가 끝나면 Installation succeeded 메시지가 나타납니다. 시스템 상태에 따라서 재시작이나 로그아웃을 해야하는 경우도 있습니다. Close 버튼을 클릭해 인스톨러를 종료합니다.
Docker Desktop 설치가 완료되었습니다
6. 이제 바탕화면의 Docker Desktop 아이콘이나 Windows + S로 Docker를 검색해서 Docker Desktop을 실행할 수 있습니다. Docker Desktop을 실행합니다.
Docker Desktop을 실행합니다
7. 시스템에 WSL2가 활성화되어있다면 Docker는 기본적으로 WSL2를 백엔드로 Docker Engine을 실행합니다. 초기 셋업에는 몇 분 정도의 시간이 걸립니다. 성공적으로 Docker가 실행되면 Tutorial이 나타납니다.
Docker가 처음 실행되면 Tutorial 안내 페이지가 나타납니다
8. Docker Desktop은 시스템 트레이에 숨겨져있습니다. 숨겨진 아이콘을 활성화하고 고래 모양 아이콘에서 오른쪽 버튼을 누르면 상태를 Docker Desktop을 관리할 수 있습니다. 여기서 About Docker Desktop을 클릭합니다.
Windows 시스템 트레이의 Docker 메뉴
현재 설치된 Docker Desktop과 관련된 도구들의 버전을 여기서 확인할 수 있습니다.
About Docker Desktop에서 Docker 관련 도구의 버전을 확인할 수 있습니다
9. 다음으로 WSL2 설정이 잘되어있는지 확인하고 WSL 통합 설정을 진행하겠습니다. Docker 아이콘에서 오른쪽 버튼을 눌러 Settings를 선택합니다. 먼저 General 설정에서 ’Use the WSL 2 based engine’에 체크가 되어있는지 확인합니다. 미리 체크가 되어있을 텐데, 혹시 되어있지 않다면 체크하고 오른쪽 아래의 Apply & Restart 버튼을 클릭합니다.
WSL2 based engine 사용 여부가 체크되어있는지 확인합니다
10. 다음으로 왼쪽 사이드바에서 Resource > WSL Integration 메뉴로 이동합니다. ’Enable Integration with my default WSL distro’에 체크되어있는지 확인합니다. 체크가 되어있지 않을 텐데 체크하고 오른쪽 아래의 Apply & Restart 버튼을 클릭해주면 도커 엔진이 재실행됩니다.
WSL2 통합 기능이 활성화 되어있는지 확인해봅니다
Docker가 재실행되면 WSL2 기반 Docker 설치는 모두 완료되었습니다!
Docker 설치 확인 및 간단한 nginx 서버 예제 실행해보기
Windows Terminal을 열어서 간단한 테스트를 해보겠습니다. PowerShell 탭을 하나 열고 wsl 명령어로 Docker 전용 머신이 실행중인 것을 확인할 수 있습니다.
$ wsl -l -v NAME STATE VERSION * docker-desktop Running 2 docker-desktop-data Running 2
wsl로 docker-desktop 리눅스에 명령어를 실행해볼 수 있습니다. docker-desktop은 BusyBox 기반의 경량 리눅스인 것을 확인해볼 수 있습니다.
$ wsl -d docker-desktop busybox BusyBox v1.29.3 (2019-01-24 07:45:07 UTC) multi-call binary. ...
docker version 명령으로 Docker 서버와 클라이언트 정보를 확인해봅니다.
$ docker version Client: Cloud integration: 1.0.17 Version: 20.10.7 API version: 1.41 ... Server: Docker Engine - Community Engine: Version: 20.10.7 API version: 1.41 (minimum version 1.12) ...
docker ps로 실행중인 컨테이너를 확인해봅니다.
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
아직 아무것도 실행중이지 않은 것을 확인할 수 있습니다. 여기서부터는 nginx 이미지로 간단한 서버 테스트를 해보겠습니다. 먼저 웹 브라우저를 열어 127.0.0.1:4567에 접속해봅니다. 다음과 같이 사이트에 접속을 할 수 없는 상태인 것을 확인합니다.
4567 포트로 접속해도 아무것도 나타나지 않습니다
docker run 명령어로 nginx 이미지 기반 컨테이너를 하나 실행해봅니다.
$ docker run -p 4567:80 -d nginx:latest Unable to find image 'nginx:latest' locally latest: Pulling from library/nginx b4d181a07f80: Pull complete edb81c9bc1f5: Pull complete b21fed559b9f: Pull complete 03e6a2452751: Pull complete b82f7f888feb: Pull complete 5430e98eba64: Pull complete Digest: sha256:47ae43cdfc7064d28800bc42e79a429540c7c80168e8c8952778c0d5af1c09db Status: Downloaded newer image for nginx:latest 5909b49c4a0e677fae0146846bdf4feca1ef869ece4cc46499f58d00f311e3d1
Docker에서는 이미지를 자동으로 다운로드 받고 실행해줍니다. docker ps로 실행한 컨테이너를 확인합니다.
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5909b49c4a0e nginx:latest "/docker-entrypoint.…" 1 second ago Up Less than a second 0.0.0.0:4567->80/tcp, :::4567->80/tcp musing_allen
다시 웹 브라우저에서 127.0.0.1:4567에 접속해보면, 이제 ‘Welcome to nginx!’ 메시지가 나타납니다.
4567 포트로 nginx 서버가 실행중인 것을 확인할 수 있습니다
사용하지 않는 컨테이너는 docker rm 명령어로 삭제해줍니다. 5909b49c4a0e는 docker ps에서 확인할 수 있는 컨테이너 ID입니다.
$ docker rm -f 5909b49c4a0e
이제 즐겁게 Docker를 활용하기만 하면 됩니다! LainyZine에서는 Docker 관련 기능과 팁을 소개하고 있으니 참고해주세요.
'docker > 설치' 카테고리의 다른 글
[Docker] Jenkins 설치 (0) | 2021.10.14 |
---|---|
[Docker] Oracle 설치 (0) | 2021.10.11 |