Docker 기초 - 설치부터 Docker Compose 멀티 컨테이너까지
7개 차시, 총 3시간 55분으로 Docker의 기본기를 끝내는 과정입니다. 개념 설명에 머무르지 않고 Dockerfile 5개를 직접 작성해 빌드하며, 마지막에는 FastAPI 서버와 MySQL 데이터베이스를 하나의 애플리케이션으로 묶어 docker compose up 한 줄로 실행합니다. 1강과 2강은 Docker Desktop 설치와 WSL2 환경 점검에서 출발합니다. Docker Hub에서 ubuntu 이미지를 pull하면서 이미지가 여러 레이어로 구성된다는 점을 확인하고, images와 rmi로 로컬 이미지를 관리합니다. 이어서 run, ps, stop, rm으로 컨테이너의 생명주기를 다루고, exec로 실행 중인 컨테이너 내부에 들어가 봅니다. 포트 매핑(-p)으로 httpd 컨테이너의 웹 페이지를 브라우저에서 열어 보고, 볼륨(-v)과 환경변수(-e)로 MySQL 컨테이너를 띄워 데이터가 컨테이너 삭제 후에도 남는 이유를 확인합니다. 3강부터 5강은 이미지를 직접 만드는 구간입니다. FROM, WORKDIR, COPY, ENV, RUN, CMD, EXPOSE를 한 줄씩 뜯어보면서 RUN과 CMD가 각각 빌드 시점과 실행 시점에 동작한다는 차이를 짚습니다. 한 번 실행되고 끝나는 Python 스크립트, 계속 떠 있는 FastAPI 서버, PyInstaller로 컴파일한 실행 파일, 그리고 jq 같은 기존 바이너리까지 네 가지 유형을 각각 이미지로 만듭니다. 특히 컴파일 예제에서는 멀티 스테이지 빌드를 사용해, 빌드 도구는 버리고 결과물만 남기는 방법을 다룹니다. 6강과 7강은 컨테이너를 연결합니다. 네트워크 설정 없이 두 컨테이너를 띄우면 왜 "Internal Server Error"가 나는지 오류를 먼저 재현한 뒤, docker network create로 네트워크를 만들어 컨테이너 이름만으로 서로를 찾아가게 만듭니다. network inspect로 할당된 IP를 확인하고, 컨테이너 안에서 ping과 /etc/resolv . conf로 Docker 내장 DNS(127.0.0.11)가 동작하는 것까지 눈으로 확인합니다. 마지막 7강에서는 지금까지의 모든 docker run 옵션을 compose.yaml 한 파일에 옮겨 적고, up과 down으로 전체 애플리케이션을 통째로 띄우고 내립니다. 실습에 사용한 Dockerfile, app . py, compose.yaml 등 프로젝트 5종이 자료로 제공되므로 타이핑 없이 바로 따라올 수 있습니다. 실습 환경은 Windows + PowerShell 기준으로 진행되며, macOS와 Linux에서도 명령어는 동일합니다.