Docker

Docker 강좌 02강 — WSL2에 Docker 설치하고 첫 컨테이너 실행

🎯 학습 목표

  • WSL2 위에서 Docker를 쓰는 두 가지 방식(Docker Desktop vs Engine 직접 설치)을 구분한다.
  • Docker를 설치하고 docker run으로 첫 컨테이너를 실행한다.
  • 실행 중인 컨테이너를 확인·중지·삭제하는 기본 명령을 익힌다.

📖 개념 설명

WSL2에서 Docker를 쓰는 방법은 크게 둘입니다. 첫째는 Docker Desktop for Windows를 설치하고 설정에서 WSL 통합을 켜는 방식으로, GUI가 있어 가장 간편합니다. 둘째는 WSL의 Ubuntu 안에 Docker Engine을 직접 설치하는 방식으로, GUI 없이 가볍고 라이선스 제약에서 자유롭습니다.

개인 학습이나 가벼운 환경이라면 Docker Desktop이 편하고, 서버와 동일한 순수 리눅스 환경을 경험하고 싶다면 Engine 직접 설치가 좋습니다. 이 강좌는 어느 쪽이든 동일하게 따라올 수 있도록 표준 docker 명령 위주로 진행합니다.

💻 실습 — 방법 A: Docker Desktop (간편)

# 1. https://www.docker.com/products/docker-desktop 에서 설치
# 2. 설치 시 "Use WSL 2 based engine" 체크
# 3. Settings → Resources → WSL Integration 에서 Ubuntu 토글 ON
# 4. Ubuntu 터미널에서 동작 확인
docker --version
docker info

💻 실습 — 방법 B: WSL Ubuntu에 Engine 직접 설치

# 공식 설치 스크립트 사용 (Ubuntu 안에서 실행)
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# sudo 없이 docker 쓰도록 현재 사용자를 docker 그룹에 추가
sudo usermod -aG docker $USER

# 그룹 적용을 위해 WSL 재시작 (윈도우 PowerShell에서)
#   wsl --shutdown   후 다시 접속

# Docker 데몬 시작 (Desktop이 없을 때는 수동/자동 시작 필요)
sudo service docker start
docker --version

💻 첫 컨테이너 실행

# 설치 검증용 hello-world
docker run hello-world

# 웹서버(nginx)를 백그라운드로 띄우고 8080 포트로 연결
docker run -d --name web -p 8080:80 nginx

# 브라우저에서 http://localhost:8080 접속 → nginx 기본 페이지 확인

컨테이너 상태를 관리합니다.

docker ps              # 실행 중인 컨테이너
docker ps -a           # 중지된 것까지 전부
docker logs web        # 로그 보기
docker stop web        # 중지
docker rm web          # 삭제 (중지 후)
docker images          # 받아둔 이미지 목록

⚠️ Windows/WSL 주의사항

  • Engine 직접 설치 시 docker 명령에 권한 오류가 나면 usermod -aG docker 후 WSL을 재시작했는지 확인하세요.
  • Desktop 없이 Engine만 쓰면 WSL을 새로 열 때마다 sudo service docker start가 필요할 수 있습니다.
  • -p 8080:80은 “윈도우 8080 → 컨테이너 80″으로 포트를 연결한다는 뜻입니다. WSL2는 localhost가 윈도우와 공유됩니다.

💡 팁

  • 이미지를 받을 때 느리면 회사 프록시/방화벽을 확인하세요.
  • docker run --rm을 쓰면 컨테이너 종료 시 자동 삭제되어 실습 찌꺼기가 안 남습니다.
  • 컨테이너 안으로 들어가 보려면 docker exec -it web bash를 사용하세요.