본문 바로가기

개발 관련/Docker

도커 컴포즈

도커 컴포즈는 시스템 구축과 관련된 명령어를 하나의 텍스트 파일(정의 파일)에 기재해 명령어 한번에 시스템 전체를 실행하고 종료와 폐기까지 한번에 하도록 도와주는 도구다.

도커 컴포즈는 시스템 구축에 필요한 설정을 YAML(YAML Ain't a Markup Language) 포맷으로 기재한 정의 파일을 이용해 전체 시스템을 일괄 실행(run) 또는 일괄 종료 및 삭제(down)할 수 있는 도구다.

  • up 커맨드 - docker run 커맨드와 유사. 정의 파일에 기재된 내용대로 이미지를 내려받고 컨테이너를 생성 및 실행
  • down 커맨드 - 컨테이너와 네트워크를 정지 및 삭제. 볼륨과 이미지는 삭제하지 않음. 컨테이너와 네트워크 삭제 없이 종료만 하고 싶다면 stop 커맨드 사용

작성 내용은 도커 명령어와 비슷하지만, 도커 명령어는 아님에 주의하자.


✏️ 도커 컴포즈 vs. Dockerfile Script

  • 도커 컴포즈 - docker run 명령어를 여러 개 모아놓은 것과 같음. 컨테이너와 주변 환경을 생성하며, 네트워크와 볼륨까지 함께 만들 수 있음
  • Dockerfile Script - 이미지를 만들기 위한 것으로, 네트워크나 볼륨은 만들 수 없음

🖥 도커 컴포즈 사용하기

윈도우와 macOS에서는 이미 도커 컴포즈가 설치되어 있기 때문에 따로 설치할 필요가 없다.

 

리눅스 유저라면 다음과 같이 설치한다.

sudo apt install -y python3 python3-pip
sudo pip3 install docker-compose

 

도커 컴포즈를 사용하려면 호스트 컴퓨터에 폴더를 만들고 이 폴더에 정의 파일(YAML 파일)을 배치한다.

정의 파일의 이름은 미리 정해진 docker-compose.yml 이라는 이름을 사용해야 한다. 이는 사람이 일일이 입력하던 명령어를 도커 컴포즈가 대신 입력해주는 역할을 하는 구조다.

정의 파일은 한 폴더에 하나만 있을 수 있고, 컨테이너 생성에 필요한 이미지 파일이나 HTML 파일 역시 컴포즈가 사용할 폴더에 함께 둔다.


✏️ 컴포즈 파일(정의 파일)을 작성하는 방법

정의 파일은 YAML 형식을 따른다. 파일의 확장자는 .yml이다. 파일 이름은 docker-compose.yml이라고 지으며, 정해진 이름을 사용할 것.

작성 요령은 주 항목 → 이름 추가 → 설정 과 같은 순서로 생각하면 된다.

YAML 형식에서는 공백에 따라 의미가 달라진다. 이름 뒤에는 반드시 콜론(:)을 붙이고, 여러 항목이 있다면 같은 들여쓰기로 기재한다.

  • 첫 줄에 도커 컴포즈 버전 기재
  • 주 항목 services(컨테이너 정의), networks(네트워크 정의), volumes(볼륨 정의) 아래에 설정 내용 기재
  • 항목 간 상하 관계는 공백을 사용한 들여쓰기로 나타냄
  • 들여쓰기는 같은 수의 배수만큼의 공백 사용
  • 이름은 주 항목 아래에 들여쓰기 한 다음 기재
  • 여러 항목을 기재하려면 줄 앞에 '-'를 붙임
  • 이름 뒤에는 콜론(:) 붙임
  • 콜론 뒤에는 반드시 공백이 와야 함(바로 줄바꿈하는 경우는 예외)
  • # 뒤의 내용은 주석으로 간주
  • 문자열은 작음 따옴표(') 또는 큰따옴표(")로 감싸 작성

 

도커 컴포즈는 docker-composer 명령을 사용한다.

# 컨테이너와 주변 환경을 생성하는 docker-compose up 커맨드
docker-compose -f 정의_파일_경로 up 옵션

# 컨테이너와 네트워크를 삭제하는 docker-compose down 커맨드
docker-compose -f 컴포즈_파일_경로 down 옵션

http://www.yes24.com/Product/Goods/108431011

 

그림과 실습으로 배우는 도커 & 쿠버네티스 - YES24

컨테이너나 도커를 도통 이해하기 어려운 분들을 위한 본격 도커 입문서!이 책은 컨테이너 기술이 어렵게 느껴지는 엔지니어나 백엔드 기술에 자신이 없는 분들을 위한 도커 입문서다. 자세한

www.yes24.com

그림과 실습으로 배우는 도커 & 쿠버네티스 6장을 보고 정리한 내용이다. 더 자세한 내용은 위의 책을 참고하길 바란다.