Backends Docker

Windows에서 Docker Desktop 없이 Docker 환경 구성하기 (WSL2 Ubuntu 서브모듈 활용)

Docker Desktop이 2022년 2월부터 일부 유료화가 되었습니다. 유료구독 기준은 직원수 250명 이상 또는 매출액 1,000만 달러 이상의 기업입니다. 상기 요건 이하의 기업이나 개인 사용자는 여전히 무료로 사용할 수 있지만, 요건에 해당한다면 Docker Desktop 없이 Docker 환경을 구성하는 방법을 찾아야 합니다.

다행히도 이러한 소식이 알려진 이후, 전세계의 개발자들이 저마다 Docker Desktop 없이 Docker 환경을 구성하기 위한 다양한 방법들을 소개하여 왔습니다. 이번 글에서는 필자가 살펴본 방법 중 가장 잘 정리되고 손쉬운 방법으로, Windows에서 WSL로 Ubuntu 서브모듈을 설치하여 Docker 환경을 구성하는 방법을 소개합니다.

 

WSL2 Ubuntu 서브모듈 설치

Powershell에서 아래 명령어를 실행함으로써 간단하게 Ubuntu 서브모듈을 설치할 수 있습니다.

wsl --set-default-version 2
wsl --install -d ubuntu

명령어 실행 후에는 서브모듈을 다운로드가 자동으로 시작되며, Ubuntu 서브모듈의 커맨드 창이 새 창으로 표시됩니다. 중간에 username와 password를 입력하는 단계를 거치게 되는데, 이 때 원하는 계정명과 비밀번호를 입력할 수 있습니다. 아래는 설치를 모두 마친 상태의 스크린 샷입니다.

이 상태에서 그대로 Ubuntu 명령어로 진행을 해도 되지만, 그렇지 않더라도 Powershell에서 아래와 같이 -d 옵션 뒤에 ubuntu를 입력해주면 언제든지 Ubunut 서브모듈의 커맨드 입력을 표시할 수 있습니다.

wsl -d ubuntu

 

Ubuntu 서브모듈 내에서 Docker 설치하기

이제 Docker 기술문서에 수록된 Install Docker Engine on Ubuntu를 따라서 설치를 진행할 수 있습니다. 문서에서 명령어만 간추리면 아래와 같습니다.

sudo apt-get remove docker docker-engine docker.io containerd runc

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

설치를 진행하고 나면, 아래 명령어로 Docker 서비스를 시작해줍니다.

sudo service docker start

이제 Docker 컨테이너가 잘 구동되는지 확인해볼 차례입니다. 여기서는 이전 글에서 다룬 Nginx 웹서버를 8081 포트에 연결하는 예제를 그대로 활용해보았습니다.

sudo docker run -p 8081:80 -d nginx

웹브라우저에서 http://localhost:8081을 열어보았을 때, nginx의 안내 페이지가 표시되면 성공적으로 구동된 것입니다.

이제 Ubuntu 서브모듈에서 각종 Docker 명령어를 정상적으로 이용할 수 있습니다. GUI가 없다는 점이 아쉽지만, 이를 통해 라이선스 문제를 회피할 수 있습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *