본문 바로가기 대메뉴 바로가기

테크니컬 스토리

아이티마야의 새로운 기술 뉴스를 만나보세요.
도커 컨테이너 한번에 올려보자
등록일
2025.10.22
첨부파일
스도커 컨테이너 한번에 올려보자
도커 컴포즈를 이용하여 간편하게 컨테이너를 관리하는법
  • 도커 컴포즈는…
  •       단일 서버에서 여러 개의 컨테이너를 하나로 묶음으로 관리하는 작업 환경을 제공하는 관리 도구이다.
          ‘그럼 그냥 도커 컨테이너를 여러개 생성하면 되는 거 아니야?’ 가능하지만 예시로 웹 애플리케이션을 테스트를 한다고 했을 경우를 생각해 보자.

기존 도커

  • # 1. MySQL 컨테이너 실행
  • docker run -d \
  •     --name mysql-db \
  •     -e MYSQL_ROOT_PASSWORD=1234 \
  •     -e MYSQL_DATABASE=testdb \
  •     -v mysql-data:/var/lib/mysql \
  •     -p 3306:3306 \
  •     mysql:8.0

  • # 2. Nginx 컨테이너 실행
  • docker run -d \
  •     --name nginx-web \
  •      -p 80:80 \
  •      --link mysql-db:mysql \
  •      nginx:latest

특징

-name, e, v, -link, p 등 옵션을 일일이 명령어로 입력해야 함

● 컨테이너가 많아질수록 명령어가 길어지고 복잡해짐

● 컨테이너 간 네트워크를 수동으로 연결해야 함

● 환경 변수를 수정하거나 새 설정을 반영하려면 매번 모든 컨테이너 재실행 필요

도커 컴포즈

YAML 설정 파일 작성 (컨테이너 한 번에 생성하기 위해 파일 생성)

  • version: "3",
  • services:
  •   db:
  •     image: mysql:8.0
  •     container_name: mysql-db
  •     environment:
  •       MYSQL_ROOT_PASSWORD: 1234
  •       MYSQL_DATABASE: testdb
  •     volumes:
  •        - mysql-data:/var/lib/mysql
  •     ports:
  •        - "3306:3306"
  • web:
  •     image: nginx:latest
  •     container_name: nginx-web
  •     ports:
  •        - "80:80"
  •     depends_on:
  •        - db
  • volumes:
  •   mysql-data:

코드는 단 두줄

  • docker-compose up -d    # 전체 실행,
  • docker-compose down     # 전체 중지 및 정리

특징

● 기억해야 할 명령어는 위에 단 두 줄만 있어도 충분히 실행 가능

● 컨테이너가 많아져도 명령어도 기억할 필요 없음

● 컨테이너 간 네트워크를 수동으로 연결 필요없음

● 환경 변수를 수정할 시 한번만 재실행

  • 도커 와 도커 컴포즈 차이
항목 Docker Docker Compose
목적 별 컨테이너 실행 여러 컨테이너(서비스) 묶음 관리
설정 방식 CLI 옵션으로 직접 지정 YAML 파일( docker-compose.yml) 정의
구성 복잡도 단일 서비스 중심 복합 서비스 (멀티 컨테이너) 구성 가능
설정 방법 명령어 옵션을 직접 입력 설정을 코드(YAML)로 정의
실행 명령 docker run (각각 실행) docker-compose up (한 번에 전체 실행)
유지보수 명령어를 기억하고 수동 관리해야 함 설정 파일을 버전 관리로 손쉽게 유지보수 가능
의존성 정의 수동 연결 (--link, 네트워크 설정 필요) depends_on으로 자동 의존성 처리
스케일링(확장) 수동으로 여러 컨테이너 실행 필요 docker-compose up --scale 명령으로 간단히 확장
사용 예시 단일 Nginx 실행 웹 + DB + Redis 등 통합 실행
네트워크 관리 기본 bridge 네트워크, 직접 연결 필요 Compose가 자동으로 내부 네트워크 생성 및 연결
파일 관리 명령어 중심이라 재현성 낮음 설정 파일 기반이라 재현성 높고 이식성 우수

정말 간단한 테스트도 여러 번 사용해야 한다면 Docker Compose가 훨씬 실행하기도 편하고 명령어도 간편하다.

PLEASE WAIT WHILE LOADING...