> 기타 외부 패키지 > docker compose

Docker Compose 명령어 가이드

Docker Compose는 다중 컨테이너 Docker 애플리케이션을 정의하고 실행하기 위한 도구입니다. YAML 파일을 사용하여 애플리케이션의 서비스를 구성하고, 단일 명령어로 모든 서비스를 시작할 수 있습니다. 이를 통해 복잡한 애플리케이션 환경을 쉽게 관리할 수 있습니다.

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 파일을 사용하거나 다른 경로에 있는 파일을 지정하여 실행합니다.


동일 카테고리 명령어