Docker Compose 설치
Docker Compose는 일반적으로 Docker Desktop에 포함되어 있거나 별도로 설치할 수 있습니다. 다음은 Linux 환경에서 Docker Compose CLI 플러그인을 설치하는 방법입니다.
Linux에 Docker Compose CLI 플러그인 설치
최신 Docker Compose CLI 플러그인을 다운로드하고 실행 권한을 부여하여 설치합니다. Docker Desktop을 사용하지 않는 경우 이 방법으로 Docker Compose를 설치합니다.
Docker Compose 플러그인 다운로드 및 설치
sudo curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
최신 버전의 Docker Compose CLI 플러그인을 다운로드하고, 실행 권한을 부여한 후 적절한 경로에 배치합니다.
Docker Compose 버전 확인
docker compose version
설치가 완료되었는지 확인하기 위해 Docker Compose 버전을 확인합니다.
주요 Docker Compose 명령어
Docker Compose는 `docker-compose.yml` 파일에 정의된 서비스들을 관리하는 데 사용됩니다. 아래 옵션들을 통해 다중 컨테이너 애플리케이션을 손쉽게 제어해 보세요.
1. 애플리케이션 빌드 및 실행
2. 애플리케이션 중지 및 삭제
3. 서비스 관리
생성된 명령어:
명령어를 조합해 보세요.
설명:
`docker compose` 명령어를 실행합니다.
위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.
docker-compose.yml 파일 구조
Docker Compose는 `docker-compose.yml` 파일을 사용하여 서비스, 네트워크, 볼륨 등을 정의합니다. 이 파일은 YAML 형식으로 작성되며, 애플리케이션의 구성 요소와 그들 간의 관계를 명확하게 나타냅니다.
기본 구조
`docker-compose.yml` 파일은 `version` (버전), `services` (서비스 정의), `networks` (네트워크 정의), `volumes` (볼륨 정의) 등의 최상위 키를 가집니다. 가장 중요한 부분은 `services` 섹션으로, 애플리케이션을 구성하는 각 컨테이너를 정의합니다.
간단한 웹 애플리케이션 예시
version: '3.8'
services:
web:
image: nginx:latest
ports:
- '80:80'
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- api
api:
build: .
ports:
- '3000:3000'
environment:
NODE_ENV: production
volumes:
data_volume:
Nginx 웹 서버와 Node.js 백엔드 서비스로 구성된 간단한 애플리케이션의 `docker-compose.yml` 예시입니다.
주요 키 설명
`docker-compose.yml` 파일에서 자주 사용되는 주요 키들에 대한 설명입니다.
- version: Compose 파일 포맷 버전을 지정합니다. 최신 버전을 사용하는 것이 좋습니다 (예: '3.8').
- services: 애플리케이션을 구성하는 각 컨테이너 서비스들을 정의하는 섹션입니다.
- image: 서비스에 사용할 Docker 이미지 이름을 지정합니다. (예: `nginx:latest`)
- build: 이미지를 빌드할 Dockerfile의 경로를 지정합니다. (예: `.`)
- ports: 호스트와 컨테이너 간의 포트 매핑을 정의합니다. (예: `- '80:80'`)
- volumes: 데이터 영속성을 위한 볼륨 마운트를 정의합니다. (예: `- ./data:/app/data`)
- environment: 컨테이너 내부에 설정할 환경 변수를 정의합니다.
- depends_on: 서비스 간의 의존성을 정의합니다. (예: `db` 서비스가 `web` 서비스보다 먼저 시작되어야 할 때)
- networks: 서비스가 연결될 네트워크를 정의합니다.
사용 예시
Docker Compose 명령어의 실제 사용 예시들을 통해 다중 컨테이너 애플리케이션을 효율적으로 관리하는 방법을 익혀보세요.
Docker Compose 프로젝트 시작 (백그라운드)
docker compose up -d
현재 디렉토리의 `docker-compose.yml` 파일을 읽어 모든 서비스를 백그라운드에서 시작합니다.
특정 서비스만 재시작
docker compose restart web
`docker-compose.yml`에 정의된 서비스 중 'web' 서비스만 재시작합니다.
로그 실시간 확인
docker compose logs -f
모든 서비스의 로그를 실시간으로 터미널에 출력하여 애플리케이션 동작을 모니터링합니다.
애플리케이션 중지 및 관련 리소스 삭제
docker compose down -v
실행 중인 모든 서비스 컨테이너를 중지하고 제거하며, 정의된 네트워크와 익명 볼륨도 함께 삭제합니다.
Docker Compose 파일 경로 지정
docker compose -f /path/to/my-app/docker-compose.prod.yml up -d
기본 `docker-compose.yml` 대신 다른 이름의 Compose 파일을 사용하거나 다른 경로에 있는 파일을 지정하여 실행합니다.