Docker는 애플리케이션을 컨테이너(Container) 라는 가볍고 이식 가능한 단위로 패키징하고 실행할 수 있게 해주는 플랫폼을 말한다.
간단히 말하면, 개발 환경을 어디서든 동일하게 만들 수 있도록 도와주는 도구라고 생각하면 된다.
docker run -d -p 80:80 nginx
nginx라는 웹 서버를 컨테이너로 실행-p 80:80: 외부 포트 80을 내부 포트 80에 연결Docker만으로도 강력하지만, Docker Compose(도커 컴포즈)는 여러 개의 컨테이너를 한 번에 정의하고 실행할 수 있도록 도와주는 도구이다.
Docker Compose는 docker-compose.yml이라는 파일 하나로 여러 컨테이너(서비스)를 구성하고 관리할 수 있게 해준다.
예를 들어, 웹 애플리케이션을 실행할 때:
이렇게 여러 개의 컨테이너가 필요하니까 → 이걸 한 번에 설정하고 실행할 수 있도록 해주는 게 Docker Compose다.
version: '3'
services:
web:
build: .
ports:
- "8080:8080"
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: mydb
web: Spring 애플리케이션 (Dockerfile 기준으로 빌드)db: MySQL 8.0 컨테이너depends_on: web 서비스가 db가 먼저 실행된 다음에 실행되도록 설정docker-compose up
docker-compose down
| Docker | Docker Compose |
|---|---|
| 하나의 컨테이너만 쉽게 실행 | 여러 개의 컨테이너를 한 번에 실행 |
docker run 명령어 직접 입력 | 설정 파일로 정의해 재사용 가능 |
| 복잡한 의존관계 관리 불편 | depends_on 등으로 쉽게 구성 |