1. Docker Compose 란
여러 개의 명령어를 하나의 yaml파일로 정리해서, 한번에 시스템 전체를 실행하고 종료와 폐기까지 시키는 방식.
- Dockerfile과의 차이점
Dockerfile은 하나의 이미지를 만드는 방법이고, Docker Compose는 컨테이너+환경설정, 네트워크, 볼륨을 한 번에 만드는 방식이다. Dockerfile에서는 네트워크와 볼륨 생성 및 설정이 불가능하다.
- 쿠버네티스와의 차이점
쿠버네티스는 컨테이너를 관리하는 도구이지만, 도커 컴포즈는 컨테이너를 생성하고 삭제하는 것 뿐이다. (관리 불가능)
- 설치
Window와 MacOS에는 이미 설치가 되어있기 때문에, 따로 설치할 필요가 없다. 리눅스는 설치해야 한다.
- 사용법
하나의 폴더에 docker-compose.yml이라는 이름의 파일을 생성한다. 이를 실행하면 하나씩 도커 명령어를 입력할 필요없이, 도커 컴포즈가 한번에 입력해서 실행해준다.
2. 작성법
#도커 컴포즈의 버전을 설정
version: "3"
#컨테이너들의 설정 내용
services:
#이름:컨테이너1
컨테이너1:
#베이스이미지 설정
image: mysql:5.7
#네트워크 설정
networks:
- 네트워크이름
volumes:
- 볼륨 이름
#환경변수 설정
environment:
MYSQL_ROOT_PASSWORD: root_pwd
MYSQL_DATABASE: db
MYSQL_USER: user
MYSQL_PASSWORD: pwd
#포트 설정
ports:
- 포트설정
#이름:컨테이너2
컨테이너2:
image: wordpress
networks:
- 네트워크
volumes:
- 볼륨
ports:
- 8000:80
#네트워크 설정
networks:
네트워크이름1:
#볼륨 설정
volumes:
볼륨1:
볼륨2:
#출처 : https://docs.docker.com/compose/
위와 같이 작성하면 된다.
1. 첫 줄에는 도커 컴포즈 버전을 적는다.
2. 주 항목에는 services, networks, volumes가 있고, 들여쓰기를 해서 하위 항목들을 작성한다.
3. 들여쓰기는 몇 칸이든 상관은 없지만, 2칸으로 하기로 했으면 모든 내용들이 2칸으로 동일해야한다.
4. 이름 뒤에는 무조건 : 를 붙인다.
5. : 과 - 뒤에는 반드시 공백이 하나 있어야한다.(위의 예시 참고)
3. 실행법
#컨테이너, 볼륨, 네트워크를 생성하고 실행
docker-compse up {옵션값}
#컨테이너와 네트워크를 종료 및 삭제. 볼륨과 이미지는 삭제되지 않는다.
docker-compose down {옵션}
up의 옵션 (컨테이너, 네트워크, 볼륨을 생성)
옵션 | 내용 |
-d | 백그라운드로 실행 |
--force-recreate | 설정이나 이미지가 변경되지 않더라도 컨테이너를 무조건 재생성 |
--no-recreate | 컨테이너가 존재할 경우, 다시 생성하지 않음 |
--no-build | 이미지가 없어도 이미지를 빌드하지 않음 |
--build | 컨테이너를 실행하기 전에 이미지를 빌드 |
--abort-on-container-exit | 컨테이너가 하나라도 종료되면 모든 컨테이너를 종료 |
-t, --timeout | 컨테이너의 종류 타임아웃 설정. 디폴트 10초 |
--remove-orphans | 컴포즈 파일에 정의되지 않은 컨테이너를 삭제 |
--scale | 스케일링(컨테이너를 여러개 실행) |
down의 옵션 (컨테이너와 네트워크를 삭제)
옵션 | 내용 |
--rmi 옵션 | 컴포즈 종료 시, 이미지도 삭제. all로 하면 모든 이미지 삭제, local로 하면 태그가 없는 이미지만 삭제 |
-v, --volumes | volumes 항목의 볼륨들을 삭제. external 볼륨은 삭제하지 않음. |
--remove-orphans | 컴포즈 파일에 정의되지 않은 서비스의 컨테이너도 모두 삭제 |
'Python > IDE, 버전관리, 도커' 카테고리의 다른 글
Dockerfile 작성법, 문법, 인스트럭션 (0) | 2022.09.10 |
---|---|
Docker 명령어 정리 (0) | 2022.08.30 |
docker build시, [Errno 28] No space left on device 해결 (0) | 2021.07.13 |
도커 이미지 생성과 삭제 방법. (0) | 2020.08.13 |
10. Jupyter Notebook 단축키 (0) | 2020.02.11 |