도커 컴포즈는 시스템 구축과 관련된 명령어를 하나의 텍스트 파일(정의 파일)에 기재해 명령어 한번에 시스템 전체를 실행하고 종료와 폐기까지 한번에 하도록 도와주는 도구다.
도커 컴포즈는 시스템 구축에 필요한 설정을 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
그림과 실습으로 배우는 도커 & 쿠버네티스 6장을 보고 정리한 내용이다. 더 자세한 내용은 위의 책을 참고하길 바란다.
'개발 관련 > Docker' 카테고리의 다른 글
1장. 컨테이너 인프라 환경이란? (0) | 2022.07.28 |
---|---|
쿠버네티스(Kubernetes) (0) | 2022.07.15 |
도커의 다양한 명령어들(복사, 볼륨 마운트 등) (0) | 2022.07.02 |
여러 개의 컨테이너를 연동해 실행하기 (0) | 2022.06.25 |
컨테이너 사용하기 (+ 아파치) (0) | 2022.06.25 |