docker-compose 자주 사용되는 명령 (이전 완료)
docker-compose는 여러개의 컨테이너를 한번에 다루기 위한 서비스로써, yml파일을 통해 설정한다.
example
version: '3'
services:
db:
image: jhkimdocker/jhmaria:v1_onlypw
ports:
- "13306:3306"
app:
build:
context: ./
dockerfile: ./Dockerfile_flask
depends_on:
- db
ports:
- "5010:5000"
environment:
- SOME_ENV1=1
- SOME_ENV2=2
- SOME_ENV3=3
command: python hello_world.py
version
버전을 명시한다.
위처럼 ‘3’만 적게되면, 3.x버전을 사용하겠다는 의미다.
service
compose에서의 컨테이너 단위이다.
컨테이너 대신 서비스라는 명칭을 사용함. 위의 예시에서는 db라는 서비스와, app이라는 서비스가 있다.
image
베이스 이미지를 지정한다.
db서비스는 jhkimdocker/jhmaria:v1_onlypw 이미지를 사용한다.
build
- context : 컨텍스트(Dockerfile이 포함된 디렉토리의 경로)에 대한 경로 지정
- dockerfile : 빌드에 사용할 대체 dockerfile 지정
- args : ARG값전달 인수 전달
- boolean값은 (“true”, “false”, “yes”, “no”, “on”, “off” ) 의 형태로 사용한다.
command
컨테이너가 실행될때 실행할 명령 app 서비스는 hello_world.py를 실행한다.
container_name
컨테이너가 생성될때 사용자 지정 컨테이너 이름을 지정한다.
depends_on
서비스간 종속성을 표현한다.
services:
flask:
...
depends_on:
- mariadb
mariadb:
...
예시로 flask와 mariadb 두개의 컨테이너를 사용하는 프로그램이 있다고 가정하자
이 프로그램은 mariadb가 설정된 후 flask가 실행되어야 하므로
depends_on을 다음과 같이 사용하여 시작, 종료될때 의존관계를 맞춰줄 수 있다.
entrypoint
기존 entrypoint를 재정의한다.
env_file
파일에서 환경 변수파일를 추가한다.
environment
환경 변수를 추가한다
expose
내부 포트를 지정한다. 외부와의 연결이 아니라 호스트OS에 알리지 않는다.
컨테이너 - 컨테이너 통신이 필요한 경우에 사용한다.
이 포트로는 호스트에서 접근이 불가능하다
external_links
compose 내부 컨테이너가 아니라 compose 외부 서비스와 연결을 위해 쓰인다
external_links:
- 외부 컨테이너
ports
노출할 포트를 지정한다.
ports:
- "5900:900"
==========================
ports:
- target: 90
published: 9090
protocol: udp
mode: host
두가지 방법이 있다.
default는 tcp이다.
volumes
호스트와 마운트할 경로를 지정한다
volumes:
- "/var/lib:/tmp"
# 호스트의 /var/lib 과 컨테이너의 /tmp를 마운트 시킨다
- "our-vol:/var/lib/mysql"
# our-vol이란 볼륨과, 컨테이너의 /var/lib/mysql을 마운트 시킨다
======================================================
volumes:
- type: volume # 볼륨과 마운트 한다
source: our-vol # 볼륨 이름은 our-vol
target: /var/lib/mysql # /var/lib/mysql 디렉토리와 마운트
- type: bind # 바인드 방식을 사용
source: /var/lib # 호스트의 디렉토리
target: /tmp # 컨테이너의 디렉토리
- type: 마운트 타입 volume, bind, tmpfs, npipe
- source: 마운트 소스 (호스트 소스)
- target: 마운트될 컨테이너 경로
docker-compose 명령어
docker-compose up
docker-compose up [OPTIONS]
docker-compose up [OPTIONS]
docker-compose.yml 파일의 내용에 따라 빌드, 실행한다.
[OPTIONS]
- -d : detatch 모드로 실행한다
- –force-recreate : 컨테이너를 지우고 새로 만든다
- –build : 이미지를 새로 만든다
docker-compose ps
docker-compose ps
서비스의 상태를 보여준다
docker-compose start/stop
서비스를 멈추거나, 멈춰있는 서비스를 실행시킨다.
docker-compose down
서비스를 내린다(지운다).
docker-compose exec
docker-compose exec [service] [comamnd]
실행중인 컨테이너에서 명령을 실행한다.