시스템 구축과 관련된 명령어를 하나의 텍스트 파일(정의 파일)에 기재해 명령어 한번에 시스템 전체를 실행하고 종료와 폐기까지 한번에 하도록 도와주는 도구가 바로 도커 컴포즈
다.
도커 컴포즈
는 시스템 구축에 필요한 설정을 YAML 포맷으로 기재한 정의 파일을 이용해 전체 시스템을 일괄 실행 또는 일괄 종료 및 삭제 할 수 있는 도구다.
up 커맨드
는 docker의 run 커맨드와 비슷하다. 이미지를 내려받고 컨테이너를 생성 및 실행한다.down 커맨드
는 컨테이너와 네트워크를 정지 및 삭제한다. 볼륨과 이미지는 삭제하지 않는다도커 컴포즈
: 컨테이너와 주변 환경을 생성하고 네트워크와 볼륨까지 함께 만들 수 있다
Dockerfile
스크립트 : 이미지를 만들기 위한 것으로 네트워크나 볼륨은 만들 수 없다.
쿠버네티스
: 컨테이너를 관리하는 도구
도커 컴포즈
: 컨테이너를 생성하고 삭제하는 것 뿐으로, 컨테이너 관리 기능은 없다.윈도우나 macOS 에서는 이미 설치돼 있기 때문에 따로 설치할 필요가 없다.
도커 컴포즈는 설치가 끝나면 바로 실행 가능한 상태가 된다.
도커 컴포즈를 사용하려면 호스트 컴퓨터에 폴더를 만들고 이 폴더에 정의 파일(YAML 파일)을 배치한다.
정의 파일
의 이름은 미리정해진 docker-compose.yml
이라는 이름을 사용해야 한다.
사람이 일일이 입력하던 명령어를 도커 컴포즈가 대신 입력해주는 역할을 하는 구조다.
정의 파일
은 한 폴더에 하나만 있을 수 있다.
정의 파일
은 YAML 형식을 따른다. 파일의 확장자는 .yml 이며 메모장 등의 텍스트 에디터로 작성하면 된다.
파일 이름은 docker-compose.yml
이라고 짓는다. -f 옵션을 사용해 파일 이름을 지정하면 다른 이름을 사용해도 되지만 그렇지 않다면 정해진 이름을 사용해야 한다.
컴포즈 파일은 맨 앞에 컴포즈 버전을 적고, 그 뒤로 services
와 networks
, volumes
를 차례로 기재한다.
services
: 컨테이너 관련 정보
networks
: 네트워크 관련 정보
volumes
: 볼륨 관련 정보
워드프레스 컨테이너는 depends_on
항목을 추가해 의존관계를 설정해야 한다.
메모장 등의 텍스트 에디터를 사용해 컴포즈 파일을 작성한다. 파일이름은 docker-compose.yml
로 한다.
version: "3"
services:
networks:
volumes:
version: "3"
services:
mysql000ex11:
wordpress000ex12:
networks:
wordpress000net1:
volumes:
mysql000vol11:
wordpress000vol12:
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: kunpass
wordpress000ex12:
networks:
wordpress000net1:
volumes:
mysql000vol11:
wordpress000vol12:
version: "3"
services:
mysql000ex11:
platform: linux/x86_64 # 추가된 옵션
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:
Mysql 8.0 대부터 인증 방식이 바뀌었기 때문에 사용하려면 인자가 필요하다.
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password
도커 컴포즈는 docker-compose 명령을 사용한다. (up, down, stop 등)
docker-compose -f 정의_파일_경로 up 옵션
옵션 | 설명 |
---|---|
-d | 백그라운드에서 실행 |
--no-deps | 링크 서비스를 시작하지 않음 |
--build | 이미지를 빌드 |
--no-build | 이미지를 빌드하지 않음 |
-t, --timeout | 컨테이너의 타임아웃을 초로 지정(기본 10초) |
--scale SERVICE=서비스 수 | 서비스 수를 지정한다. |
컨테이너와 네트워크를 삭제한다.
docker-compose -f 컴포즈_파일_경로 down 옵션
옵션 | 설명 |
---|---|
--rmi all | 모든 이미지를 삭제 |
--rmi local | 커스텀 태그가 없는 이미지만 삭제 |
-v, --volumes | Compose 정의 파일의 데이터 볼륨을 삭제 |
컨테이너를 종료한다.
docker-compose -f 컴포즈_파일_경로 stop 옵션
**[Docker] Docker-Compose 주요 명령어 총정리 :** https://kimjingo.tistory.com/108
docker-compose -f C:\Users\minyeob\Desktop\com_folder\docker-compose.yml up -d
docker-compose -f C:\Users\minyeob\Desktop\com_folder\docker-compose.yml down
down 커맨드를 사용해도 이미지와 볼륨은 삭제되지 않는다. 직접 삭제해야 한다.