본문 바로가기
개발 공부/인프라

[그림과 실습으로 배우는 도커 & 쿠버네티스] Ch7 - 도커 컴포즈를 익히자

by 진!!!!! 2025. 1. 8.

도커 컴포즈란?

도커 명령어를 정의 파일(Compose file)에 기술해 실행하는 도구

시스템 구축과 관련된 명령어를 하나의 파일에 기재해, 명령어 한번으로 시스템 전체를 실행→종료→폐기까지 가능하게 함

  • up 커맨드: docker up과 비슷. 이미지 내려받고 컨테이너 생성 및 실행, 네트워크와 볼륨도 가능
  • down 커맨드: 컨테이너와 네트워크를 정지 및 삭제. 볼륨과 이미지는 삭제 x

도커 컴포즈와 Dockerfile의 차이

  • 도커 컴포즈: docker run 명령어를 여러 개 모아둔 것으로, 컨테이너, 네트워크, 볼륨 생성 가능
  • Docker file: 이미지 생성만 가능

도커 컴포즈와 쿠버네티스의 차이

  • 도커 컴포즈: 컨테이너 생성, 삭제만 가능 (관리 불가)
  • 쿠버네티스: 여러 개의 컨테이너 관리

 

도커 컴포즈의 설치와 사용법

윈도우나 macOS에서 사용하는 도커 데스크톱은 도커 컴포즈가 함께 설치되기 때문에 따로 설치할 필요 x

도커 컴포즈의 사용법

호스트 컴퓨터에 폴더 생성, YAML 파일 배치

  • 파일명: docker-compose.yml로 모두 동일
    • -f 옵션으로 파일명 지정 가능

서비스: 도커 컴포즈에서 컨테이너가 모인 것.

 

도커 컴포즈 파일을 작성하는 법

들여쓰기: 공백 두개씩

version: "3"
services:
  컨테이너_이름1:
	  image: 네트워크_이름
	  nerworks:
			- 네트워크_이름
		ports:
			- 포트_설정
		...
  컨테이너_이름2:
	  image: 네트워크_이름
	  ...
nerworks:
	네트워크_이름1:
	...
volumes:
	볼륨_이름1:
	볼륨_이름2:

 

주 항목

항목 내용
services 컨테이너 정의
networks 네트워크 정의
volumes 볼륨 정의

 

자주 나오는 정의 내용

항목 docker run 커맨드의 해당 옵션 또는 인자 내용
image 이미지 인자 사용할 이미지
networks —net 접속할 네트워크
volumes -v, —mount 스토리지 마운트
ports -p 포트 설정
environment -e 환경변수 설정
depends_on   의존관계 정의
restarts   컨테이너 종료 시 재시작 여부

 

restart의 설정값

설정값 내용
no 재시작 x
always 항상 재시작
on-failure 프로세스가 0 외 상태로 종료 시 재시작
unless-stopped 종료 시 재시작 x, 그 외는 재시

MySQL과 wordpress 컴포즈 파일 작성

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 커맨드

docker-compose -f 정의_파일_경로 up 옵션
docker-compose -f 정의_파일_경로 down 옵션
docker-compose -f 정의_파일_경로 stop 옵션
  1. 컴포즈 파일 실행
docker-compose -f C:\\Users\\whdms\\Desktop\\project\\docker_practice\\docker-compose.yml up -d(백그라운드로 실행)

 

로컬 호스트에 접속해보니 워드프레스가 잘 뜬다.

 

2. 컨테이너와 네트워크를 종료 및 삭제

docker-compose -f C:\\Users\\whdms\\Desktop\\project\\docker_practice\\docker-compose.yml down

 

3. 이미지와 볼륨 삭제

rm으로 삭제한다.