Docker는 컨테이너라는 기술을 활용해 소프트웨어를 가볍고, 이식성 있게 실행할 수 있게 해주는 오픈소스 플랫폼이다.
주요개념
✅1. Dockerfile
Dockerfile은 이미지를 만들기 위한 스크립트로 어떤 OS를 쓸지, 어떤 라이브러리를 설치할지, 어떤 파일을 복사하고 어떤 명령을 실행할지, 최종적으로 무엇을 실행할지를 정의한다.
FROM python:3.11 # 1. 베이스 이미지
COPY . /app # 2. 코드 복사
WORKDIR /app # 3. 작업 디렉토리 지정
RUN pip install -r requirements.txt # 4. 의존성 설치
CMD ["python", "main.py"] # 5. 앱 실행 명령
✅2.Docker Image
Docker Image는 Dockerfile로 만든 실행 환경 패키지로 docker build 명령어를 사용하면 만들어진다.
코드, 라이브러리, 설정 등 모든 실행 정보가 포함된 읽기 전용의 컨테이너를 만드는 템플릿 역할을 한다.
docker build -t my-fastapi-app .
-> my-fastapi-app 이라는 이미지가 생성된다.
✅3 Container
이미지로부터 실제로 실행된 인스턴스이다. 독립된 공간에서 동작하며 여러 개의 컨테이너를 동시에 실행할 수 있다.
docker run --name api-container -p 8000:8000 my-fastapi-app
-> my - fastapi -app 이미지를 기반으로 api - container 가 실행되는 예제
✅4. Docker compose
여러 개의 컨테이너를 한번에 실행하고 서로 연결해주는 다중 컨테이너 구성 도구이다.
.yml 파일로 각 서비스를 정의하며 각 컨테이너는 compose가 자동으로 같은 네트워크에서 연결시켜준다.
version: "3.8"
services:
web:
build: .
container_name: fastapi-app
ports:
- "8000:8000"
depends_on:
- db
db:
image: mysql:8.0
container_name: mysql-db
restart: always
environment:
MYSQL_ROOT_PASSWORD: 1234
MYSQL_DATABASE: testdb
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
✅ 연결 관계
[Dockerfile] ──▶ docker build ──▶ [Image] ──▶ docker run ──▶ [Container]
▲
┌────┘
docker-compose.yml ──────┘
Docker 설치 (WSL2 + Vscode 기준)
✅ Docker Desktop 설치
https://www.docker.com/products/docker-desktop/ 공식 다운로드 페이지에서 Windows용 Docker Desktop 설치
Docker Desktop: The #1 Containerization Tool for Developers | Docker
Docker Desktop is collaborative containerization software for developers. Get started and download Docker Desktop today on Mac, Windows, or Linux.
www.docker.com
1. 설치 중에 WSL2 backend 옵션 체크
2. 설치 후 실행 -> Docker 아이콘이 System Tray에 떠야 함
3. Docker Desktop > setting > Resources > WSL Integration > Ubuntu 체크 확인

