Docker-Compose의 주요 용어 및 개념

Docker-Compose의 주요 용어 및 개념

DevOps
Docker Compose
Docker-Compose의 주요 용어 및 개념
Author

gabriel yang

Published

October 7, 2024


Docker-Compose의 주요 용어 및 개념

Docker-Compose는 여러 개의 Docker 컨테이너를 정의하고 실행할 수 있는 도구로, 마이크로서비스 아키텍처를 채택한 애플리케이션 개발에서 특히 유용합니다. Docker-Compose를 이해하고 활용하기 위해 알아야 할 주요 용어와 개념을 정리해 보겠습니다.

1. 서비스 (Service)

서비스는 Docker-Compose 파일 내에서 정의된 하나의 컨테이너를 나타냅니다. 각 서비스는 애플리케이션의 특정 기능을 수행하는 단위로, 예를 들어 웹 서버, 데이터베이스 서버, 캐시 서버 등이 있을 수 있습니다. 서비스는 다른 서비스와의 관계를 설정할 수 있으며, 이를 통해 전체 애플리케이션을 구성합니다.

2. Docker-Compose 파일 (docker-compose.yml)

docker-compose.yml 파일은 서비스, 네트워크, 볼륨 등 Docker-Compose 환경을 정의하는 구성 파일입니다. 이 파일은 YAML 형식으로 작성되며, 각 서비스의 이미지, 환경 변수, 포트 매핑 등을 설정할 수 있습니다. 예를 들어:

version: '3'
services:
  web:
    image: nginx
    ports:
      - "80:80"
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: example

3. 네트워크 (Network)

Docker-Compose에서는 서비스 간의 통신을 위해 네트워크를 설정할 수 있습니다. 기본적으로 모든 서비스는 기본 네트워크에 연결되지만, 필요에 따라 사용자 정의 네트워크를 생성할 수도 있습니다. 이를 통해 서비스 간의 격리와 보안을 강화할 수 있습니다.

4. 볼륨 (Volume)

볼륨은 컨테이너의 데이터를 지속적으로 저장하기 위한 방법입니다. Docker-Compose를 사용하면 특정 서비스에서 사용할 볼륨을 쉽게 정의할 수 있습니다. 예를 들어, 데이터베이스의 데이터 파일을 호스트 시스템이나 다른 볼륨에 저장하여 컨테이너가 재시작되더라도 데이터가 사라지지 않도록 할 수 있습니다.

services:
  db:
    image: postgres
    volumes:
      - db_data:/var/lib/postgresql/data
volumes:
  db_data:

5. 빌드 (Build)

서비스를 정의할 때 Dockerfile을 사용하여 이미지를 빌드할 수 있습니다. Docker-Compose는 build 옵션을 사용하여 서비스의 Dockerfile 경로를 지정할 수 있습니다. 이를 통해 애플리케이션을 커스터마이징할 수 있습니다.

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile

6. 명령어 (Commands)

Docker-Compose는 여러 가지 유용한 명령어를 제공합니다. 주요 명령어는 다음과 같습니다:

  • docker-compose up: 서비스를 시작하고, 필요한 컨테이너를 생성합니다.
  • docker-compose down: 실행 중인 서비스를 중지하고, 모든 컨테이너를 제거합니다.
  • docker-compose ps: 현재 실행 중인 서비스와 컨테이너의 상태를 확인합니다.

7. 환경 변수 (Environment Variables)

Docker-Compose 파일에서 환경 변수를 정의하여 각 서비스의 설정을 조정할 수 있습니다. 이를 통해 개발, 테스트, 배포 환경에 따라 다양한 설정을 쉽게 관리할 수 있습니다.

services:
  app:
    image: myapp
    environment:
      - NODE_ENV=production

8. 종속성 (Dependency)

서비스 간의 종속성을 정의할 수 있습니다. 예를 들어, 웹 서비스가 데이터베이스 서비스에 의존하는 경우, depends_on 옵션을 사용하여 데이터베이스가 먼저 시작되도록 설정할 수 있습니다.

services:
  web:
    image: mywebapp
    depends_on:
      - db