도커 컴포즈

윤이령·2026년 4월 22일

도커 컴포즈

  • 시스템 구축과 관련된 명령어를 하나의 텍스트 파일(정의 파일)에 기재해 명령어 한번에 시스템 전체를 실행하고 종료와 폐기까지 한번에 하도록 도와주는 도구
  • docker-compose.yml작성 -> 파일 이름 고정

구조

up 커맨드

  • docker run커맨드와 비슷
  • 정의 파일에 기재된 내용대로 이미지를 내려받고 컨테이너를 생성 및 실행

down 커맨드

  • 컨테이너와 네트워크 정지 및 삭제
  • 볼륨과 이미지는 삭제하지 않음.
  • 컨테이너와 네트워크 삭제 없이 종료만 하고싶다면 stop커맨드 사용

dockerfile 스크립트 vs 도커 컴포즈

  • 도커 컴포즈
    • docker run 명령어를 여러개 모아놓은 것과 같음
    • 컨테이너와 주변 환경, 네트워크와 볼륨까지 생성
  • dockerfile
    • 이미지를 만드는데 쓰임

사용

  • 리눅스 환경에서 사용
# 사용 언어 및 컴포즈 설치
sudo apt install -y python3 python3-pip
sudo pip3 install docker-compose
  • 정의 파일은 한폴더에 하나만 있을 수 있음
  • 주로 크게 service(컨테이너 정의), networks(네트워크 정의), volumes(볼륨 정의) 로 나뉨
  • 처음 설정공백따라 의미가 달라짐
  • 이름 뒤에는 콜론 사용(:)
version: "3"
services:
	컨테이너_이름:
    	image: 이미지_이름
        networks: 
        	- 네트워크_이름
    컨테이너_이름2:
    	image: 이미지_이름
networks:
	네트워크_이름1:
volumes:
	볼륨이름1:

작성 예시

version: "3"
services:
  mysql000ex11:
    image: mysql:5.7
    networks:
      - wordpress000net1
    volumes:
      - mysql000vol11:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: myrootpass
      MYSQL_DATABASE: wordpress000db
      MYSQL_USER: wordpress000kun
      MYSQL_PASSWORD: wkunpass
  wordpress000ex12:
    depends_on:
      - mysql000ex11
    image: wordpress
    networks:
      - wordpress000net1
    volumes:
      - wordpress000vol12:/var/www/html
    ports:
      - 8085:80
    restart: always
    environment:
      WORDPRESS_DB_HOST: mysql000ex11
      WORDPRESS_DB_NAME: wordpress000db
      WORDPRESS_DB_USER: wordpress000kun
      WORDPRESS_DB_PASSWORD: wkunpass
networks:
  wordpress000net1:
volumes:
  mysql000vol11:
  wordpress000vol12:

실행

# 컨테이너와 주변환경 생성
docker-compose -f 정의_파일_경로 up 옵션
# 컨테이너와 네트워크 삭제
docker-compose -f 컴포즈_파일_경로 down 옵션
# 컨테이너 종료
docker-compose -f 컴포즈_파일_경로 stop 옵션
  • 생성 옵션
    • -d: 백그라운드 실행
    • --no-color: 화면 출력 내용을 흑백으로
    • --no-deps: 링크된 서비스 실행하지 않음
    • --force-recreate: 설정 또는 이미지가 변경되지 않더라도 컨테이너 재생성
    • --no-create: 컨테이너가 이미 존재할 경우 다시 생성하지 않음
    • --no-build: 이미지가 없어도 이미지를 빌드하지 않음
    • --build: 컨테이너를 실행하기 전에 이미지 빌드
    • --abort-on-container-exit: 컨테이너가 하나라도 종료되면 모든 컨테이너 종료
    • -t, --timeout: 컨테이너를 종료할 때의 타임아웃 설정. 기본 10초
    • --remove-orphans: 컴포즈 파일에 정의되지 않은 서비스의 컨테이너 삭제
    • --scale: 컨테이너의 수를 변경
  • 삭제 옵션
    • --rmi 종류: 삭제 시에 이미지도 삭제. 종류 all일 경우 모든 이미지 삭제. local일 경우 커스텀 태그가 없는 이미지만 삭제
    • -v, --volumes: volumes항목에 기재된 볼륨을 삭제. 단, external로 지정된 볼륨은 제외
    • --remove-orphans: 컴포즈 파일에 정의되지 않은 서비스의 컨테이너도 삭제

실습

# 컴포즈 내용 실행
docker-compose -f C:\work\com_folder\docker-compose.yml up -d
# 컨테이너와 네트워크 종료 및 삭제
docker-compose -f C:\work\coom_folder\docker-compose.yml down

0개의 댓글