[Docker2] Windows에서의 Docker 활용

windows에서의 docker 활용

Windows와 태생이 다른 Linux 기반의 Docker


Docker는 태생이 Linux 기반이다. 그래서 순수한 Windows에서는 Docker를 활용할 수 없다. 하지만 Windows 10에서 WSL을 출시했다. Windows Subsystem Linux로서 “Windows 환경에서 Linux를 활용”할 수 있도록 도와주는 기능이다. 이를 이용하여 Docker를 활용할 수 있게 되었다. WSL2가 출시되면서 더 native하게 Windows 환경에서 Linux를 이용할 수 있게 되었고 이에따라 Docker의 활용도 더 쉬워졌다. (자세한 내용은 아래 포스트 참조)

Windows에서 Docker를 가장 쉽게 사용하는 방법 : Docker Desktop


Microsoft는 컨테이너화 시장의 de facto가 되어버린 Docker를 Windows 환경에서도 지원해야 할 필요가 있었다. 그래서 Docker와 함께 Windows 환경에서도 Docker를 편하게 활용할 수 있도록 Docker Desktop을 Full support 한다. MS 공식 문서 중에 Docker Desktop과 Docker를 활용하는 아티클들이 많다.(WSL에서 Docker 컨테이너 시작 | Microsoft Learn)

따라서 Windows에서 가장 쉽게 Docker를 활용할 수 있는 방법은 Docker와 Windows에서 전적으로 지원하는 Docker Desktop을 이용하는 것이다. 단순히 Download Docker Desktop | Docker에 방문해서 설치 exe를 구동하면 끝이다. 그러면 WSL2를 기반으로 Windows 환경에서 Docker를 활용할 수 있도록 설치를 완료해주고, cmd나 powershell에서 docker 명령어를 사용할 수 있다.

docker desktop의 비용 플랜 요금제

하지만 이는 한계가 있다. 왜냐면 Docker Desktop이 부분 유료화가 되었기 때문이다. 매출 100억 이상 or 인원 250명 이상의 조직에서는 Docker Desktop을 돈을 주고 활용해야 한다. 사실 그렇게 비싼듯하진 않아 그냥 돈을 내는 것도 방법이긴 하다. 하지만 회사에서 대형으로 활용하는 것이 아니고 기초 연구 단계라면 공식화 하기가 꺼려지는 것도 사실이다.

복잡하지만 무료인 방법 : WSL 2 + DockerD + DockerCLI


그런 사람들을 위한 팁이 있다면, Windows와 Docker가 Docker Desktop에서 했던 설정을 직접 해주면 된다. 아래 그림에서 Docker Desktop 영역을 우리가 설정해 주면 되는 것이다. Hyper-V 또는 WSL을 이용해 Linux VM을 생성하고, 그 VM에 docker engine을 설치한다. Windows에서 docker cli 바이너리(Releases · StefanScherer/docker-cli-builder (github.com))를 이용해서 Linux VM의 docker engine(dockerd)을 호출한다. 이를 위해 Docker Engine을 특정 통신에 열어두는 sudo dockerd -H [연결] 명령을 사용하여 구동하고, Docker CLI에서도 -H 옵션을 활용(DOCKER_HOST 환경변수도 가능)하면 된다. 바로 아래 그림처럼 말이다!

wsl2 windows dockercli dockerd 연동 구조

아래는 실제 Hyper-V, Ubuntu VM, DockerD(Ubuntu), Windows Docker CLI를 구축한 캡쳐본이다. 너무 불친절하게 적어두긴 했다. 하지만 위의 설명들을 잘 읽어본다면 혼자서도 구축할 수 있을 것이다. 혹시나 도움이 필요하면 댓글을 통해 언제든지 알려달라!

wsl2를 활용한 windows에서의 docker 실제 구축 화면

마치며…


솔직히 그냥 리눅스 기반의 PC나 서버에서 docker를 구축하면 할 필요 없는 작업이다.
다만 회사의 base OS가 windows라 linux 채택에 부담이 되는 곳에서는 고려해볼 수 있는 옵션이다.
수요가 있을지 모르겠으나 다음 번엔 실제 구축 과정을 연재해보도록 하겠다.

이전글

다음글


Posted

in

, ,

by

Comments

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다