유용한 IT Tool

WSL 2 Docker 설치 방법

Somaz 2023. 4. 26. 20:15
728x90
반응형

Overview

오늘은 Windows 환경에서 WSL2 기반으로 Docker를 사용하는 방법에 대해 알아본다.


WSL2는 리눅스와 거의 동일한 환경을 제공하며, Docker Desktop과 연동하면 로컬 개발, 빌드, 테스트를 효율적으로 수행할 수 있다.

 

 

이 글에서는 Docker Desktop 설치부터 WSL2 연동, Docker 명령어 실행까지의 과정을 단계적으로 정리하며,
개발자들이 로컬에서 컨테이너 기반의 환경을 구성하고 활용하는 방법을 실습 중심으로 설명한다.

 

 

 

 

 

 

📅 관련 글

2022.02.04 - [IaC/Container] - docker(Ubuntu 20.04) / Portainer

2022.03.21 - [IaC/Container] - Docker(CentOS 7.9)

2023.04.24 - [IaC/Container] - Dockerfile이란?

2023.04.26 - [유용한 IT Tool] - WSL 2 Docker 설치 방법

2024.02.02 - [IaC/Container] - Dockerfile 보안 설정(Hadolint)

2024.07.09 - [IaC/Container] - Dockerfile 빌드 원칙 & Layer

2024.04.22 - [IaC/Container] - Docker Compose: 컨테이너화된 애플리케이션 구성 및 실행 가이드

 

 


 

 

 

 

설치

 

1. WSL 배포판 확인 및 설치

 

WSL2를 사용하기 위해서는 먼저 WSL2를 지원하는 리눅스 배포판이 설치되어 있어야 한다.

일반적으로 Ubuntu 20.04 또는 Ubuntu 22.04가 많이 사용되며, 설치 여부를 아래 명령어로 확인할 수 있다.

wsl --list --verbose

wsl.exe --install # WSL 설치
wsl.exe --update # 최신 버전으로 업데이트
wsl --set-default-version 2 # WSL2을 기본 버전으로 설정

 

 

만약 원하는 배포판이 없다면 다음 명령어로 직접 설치할 수 있다.

wsl --install -d Ubuntu-22.04
  • 설치가 완료되면, 위에서 설명한 대로 Docker Desktop의 설정에서 해당 배포판과의 연동을 활성화해주면 된다.

 

 

 

 

 

 

2. Docker Desktop 설치

 

Install Docker Desktop on Windows 를 클릭해서 Windows용 docker desktop을 다운로드 받고 설치한다.

 

 

 

 

3. Docker Desktop 에서 WSL2 설정

 

설치하고 docker 를 실행한 후에  Settings  메뉴를 선택한다.

 

설정 화면에서 General  → Use the WSL2 based engine  이 체크되어 있는지 확인한다.

 

 

 

 

 

Resources  → WSL Integration  에서 docker 를 사용할 WSL 을 체크한 후에 Apply & Restart  를 클릭한다.

 

 

 

 

 

4. WSL2 에서 Docker 확인

 

 

 

이제 WSL 인스턴스를 열고 명령행에서 docker 를 실행한다.

$ docker --version
Docker version 20.10.24, build 297e128

 

 

 

 

정상 동작 여부를 확인하기 위해 `hello-world` 컨테이너를 실행해본다.

$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:4e83453afed1b4fa1a3500525091dbfca6ce1e66903fd4c01ff015dbcb1ba33e
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

somaz@AD01769994:~$ docker ps -a
CONTAINER ID   IMAGE         COMMAND    CREATED         STATUS                     PORTS     NAMES
14ffa01f53f2   hello-world   "/hello"   9 seconds ago   Exited (0) 8 seconds ago             vibrant_tu

 

 

`docker build` 명령어를 사용해 이미지를 build 해본다.

$ docker build -f somaz.Dockerfile -t somaz:1.0 ./
[+] Building 153.9s (18/21)
 => [internal] load .dockerignore                                                                                                                                                      0.1s
 => => transferring context: 289B                                                                                                                                                      0.0s
 => [internal] load metadata for docker.io/library/node:17-alpine                                                                                                                      2.6s
 => [internal] load metadata for docker.io/library/node:17-slim                                                                                                                        2.6s
 => [builder 1/8] FROM docker.io/library/node:17-slim@sha256:a180966357fe14cac9dd6c9cd496ed4d85b8a598cb33482705ecebad646145e3                                                          3.7s
 ...
  => exporting to image                                                                                                                                                                 4.9s
 => => exporting layers                                                                                                                                                                4.9s
 => => writing image sha256:f1c795899d0bdd9d938fc613b7b1222c6da3e56d90c931f23ae1191856d1296f                                                                                           0.0s
 => => naming to docker.io/library/somaz:1.0

 

 

 

 

 

5. WSL ↔ Docker 경로 참고 팁

 

WSL에서 작업하는 파일을 Windows에서도 사용하거나, 반대로 Windows 파일을 Docker 컨테이너에서 사용할 때는 경로를 잘 이해하고 있어야 한다.

  • WSL 내부에서의 리눅스 경로: `/home/somaz/app`
  • Windows에서 접근하는 경로: `\\wsl$\Ubuntu-22.04\home\somaz\app`

 

 

또한 Windows 경로를 Docker에 마운트하고 싶다면 다음과 같이 volumes 항목을 활용하면 된다.

volumes:
  - /mnt/c/Users/somaz/app:/app

 

 

 

 

 

6. VS Code 연동 팁

보다 생산적인 개발 환경을 원한다면, VS Code의 `Remote - WSL` 확장을 활용하는 것이 좋다. 이 플러그인을 설치하면 VS Code에서 WSL2에 직접 연결되어 작업할 수 있으며, 도커 컨테이너도 쉽게 제어할 수 있다.

 

또한 `.devcontainer.json` 설정을 활용하면 컨테이너 안에서 바로 개발 환경을 구성할 수 있어, 팀 내 일관된 개발 환경 유지에도 도움이 된다.

 

 

 

 

 


 

 

 

 

마무리 

WSL2 기반 Docker 환경은 윈도우 사용자가 리눅스 환경의 유연함을 그대로 유지하면서도
Docker의 모든 기능을 활용할 수 있도록 해주는 강력한 개발 플랫폼이다.

 

이번 글에서 소개한 설치 및 설정 과정을 따라가면 누구나 쉽게 로컬 컨테이너 환경을 구축할 수 있으며,
이후에는 Dockerfile 작성, Compose 구성, CI/CD 연동까지 확장할 수 있다.

 

이제 Windows에서도 리눅스 못지않은 컨테이너 개발 환경을 갖춰보자!

 

 

 

 

 

 

 


Reference

Windows Docker 데스크탑 설치

 

 

728x90
반응형

'유용한 IT Tool' 카테고리의 다른 글

VSCode Vim Extension 사용 가이드  (0) 2024.05.17
Openlens / Choco 설치  (0) 2023.04.21
WSL 창 분할 창 닫기 메모  (0) 2023.01.09