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