Docker Compose
여러 docker를 한번에 up(setup)할때 사용하는 방법이다. yml 파일을 사용하며,
docker-compose up
명령어로 실행하여 사용할 수 있다.
TL;DR
version: '{버전}' services: {도커 이름}: driver: {네트워크 이름} build: {dockerfile build 할 시 디렉토리} ports: - "{외부포트}:{컨테이너포트}" volumes: - {볼륨명}: {컨테이너 위치} - logvolume01:/var/log links: - redis #링크 redis: image: redis # dockerfile에서 build 하지않고 이미지를 받아옴 environment: {환경 변수명}: {컨테이너이름}:3456 DB_PASSWORD: redis:password volumes: logvolume01: {} networks: {네트워크 이름}: # 커스텀 네트워크 사용 driver: custom-driver-1 {네트워크 이름}: # 커스텀 네트워크 옵션 사용 driver: custom-driver-2 driver_opts: foo: "1" bar: "2"
Version
난빠가엿다..
docker 문법의 버전을 의미한다. 각 버전벌로 필요로하는 docker-engine이 다르고 지원하는 문법이 다르니 주의.
Compose file format | Docker Engine release |
---|---|
3.6 | 18.02.0+ |
3.5 | 17.12.0+ |
3.4 | 17.09.0+ |
3.3 | 17.06.0+ |
3.2 | 17.04.0+ |
3.1 | 1.13.1+ |
3.0 | 1.13.0+ |
2.3 | 17.06.0+ |
2.2 | 1.13.0+ |
2.1 | 1.12.0+ |
2.0 | 1.10.0+ |
1.0 | 1.9.1.+ |
Service
아래엔 container의 상세 내용이 기술된다.
{도커 이름} : # run될 container의 이름을 설정한다.
build: . # 빌드할 Dockerfile의 경로
image: ubuntu:16.04 # 빌드 하지않고 이미지를 사용할 수 있음.
ports:
– 8080:80 # 외부포트 : 컨테이너 포트 설정
volume:
– my_data:/data # 볼륨명 : 컨테이너 위치
link:
– container_name # link로 연결할 컨테이너 이름 ( deprecate )
environment:
– ENV_NAME: env_value # 환경변수 설정
Network
driver: bridge # 네트워크에서 사용할 드라이버 종류 (overlay, host, none 등…)
internal : true # 내부망 설정 옵션
ipam:
driver: default # ipam에서 사용할 드라이버 옵션 기본 설정은 default
config: # ipam config
– subnet : 10.0.0.0/24 # subnet 설정 ps. gateway설정은 version 2에서만 지원된다.