[docker-compose] 운용 가이드
docker-compose 운용 가이드
docker-compose 의 버전 확인
docker-compose --version
docker-compose 의 기본 명령
서브 명령 | 설명 |
---|---|
up | 컨테이너 생성/시작 |
ps | 컨테이너 목록 표시 |
logs | 컨테이너 로그 출력 |
run | 컨테이너 실행 |
start | 컨테이너 시작 |
stop | 컨테이너 정지 |
restart | 컨테이너 재시작 |
pause | 컨테이너 일시 정지 |
unpause | 컨테이너 재개 |
port | 공개 포트 번호 표시 |
config | 구성 확인 |
kill | 실행 중인 컨테이너 강제 정지 |
rm | 컨테이너 삭제 |
down | 리소스 삭제 |
docker-compose.yml
을 바탕으로 컨테이너 생성/시작
current directory 이외의 장소에 docker-compose.yml
을 놓아 둔 경우는 -f
옵션으로 파일 경로를 지정
docker-compse -f ./sample/docker-compose.yml up
특정 컨테이너 조작
서브 명령 다음에 컨테이너명을 지정하면 해당 컨테이너만을 조작할 수 있음
- webserver 라는 이름의 컨테이너만 정지
docker-compose stop webserver
여러 컨테이너 생성(up)
docker-compose up 명령
docker-compose.yml
을 바탕으로 여러 개의 컨테이너를 생성하여 시작할 때 사용
docker-compose up [옵션] [서비스명 .]
지정할 수 있는 주요 옵션
옵션 | 설명 |
---|---|
-d |
백그라운드에서 실행한다 |
--force-recreate |
컨테이너를 지우고 새로 만든다 |
--no-deps |
링크 서비스를 시작하지 않는다 |
--build |
이미지를 빌드한다 |
--no-build |
이미지를 빌드하지 않는다 |
-t , --timeout |
컨테이너의 타임아웃을 초로 지정(기본 10초)한다 |
--scale SERVICE=서비스수 |
서비스 수를 지정 |
여러 컨테이너의 일괄 생성 및 시작
docker-compose up
여러 컨테이너를 백그라운드로 시작
docker-compose up -d
docker 이미지 빌드
Dockerfile을 수정 했을 때 build
명령을 사용하여 도커 이미지를 새로 만들어야 함up
명령에 다음 과 같이 --build
옵션을 넣으면 알아서 이미지를 새로 만들고 서비스를 재시작 함
docker-compose up --build
컨테이너 명을 뒤에 붙이면 해당 컨테이너에 대해서만 build
한다
docker-compose up --build |<컨테이너>|
docker-compose up --scale 명령
컨테이너를 생성할 개수를 지정할 때 --scale
옵션을 사용
docker-compose up --scale [서비스명=수]
컨테이너 개수 지정
docker-compose.yml
에 server_a와 server_b라는 2개의 정의가 있고
server_a의 컨테이너를 10개, server_b 컨테이너를 20개 시작하고 싶을 때
docker-compose up --scale server_a=10 --scale server_b=20
여러 컨테이너 확인(ps/logs)
여러 컨테이너의 상태확인
docker-compose ps
컨테이너 ID 확인
docker-compose ps -q
docker 명령을 사용한 컨테이너 확인
docker container ls
docker 명령을 사용한 로그 확인
docker-compose logs
컨테이너에서 명령 실행(run)
docker-compose 로 시작한 컨테이너에서 임의의 명령을 실행
docker-compose up 명령을 사용하여 시작한 server_a라는 이름의 컨테이너에서 /bin/bash를 실행하는 예
docker-compose run server_a /bin/bash
여러 컨테이너 시작/정지/재시작(start/stop/restart)
여러 컨테이너 일괄 시작
docker-compose start
여러 컨테이너 일괄 정지
docker-compose stop
여러 컨테이너 일괄 재시작
docker-compose restart
특정 컨테이너 재시작
docker-compose restart server_a
여러 컨테이너 일시 정지/재개(pause/unpause)
여러 컨테이너 일시 정지
docker-compose pause
여러 컨테이너 일시 정지 재개
docker-compose unpause
서비스의 구성 확인(port/config)
서비스 공개용 포트 확인
docker-compose port [옵션] <서비스명> <프라이빗 포트 번호>
지정할 수 있는 주요 옵션
옵션 | 설명 |
---|---|
--protocol=proto |
프로토콜 tcp 또는 udp |
--index=index |
컨테이너의 인덱스 수 |
공개 포트 확인
webserver의 80 private port의 공개 포트 확인
docker-compose port webserver 80
구성 확인
docker-compose config
여러 컨테이너 강제 정지/삭제(kill/rm)
https://docs.docker.com/compose/reference
docker-coompose kill
명령을 사용해서 컨테이너에게 시그널을 송신할 수 있음
시그널이란 프로세스 간의 연락을 주고 받기 위한 장치로 Linux 커널에 내장되어 있음
컨테이너에 시그널 송신
docker-compose kill -s SIGINT
옵션을 지정하지 않고 docker-compose kill
을 실행하면 SIGKILL
이 송신됨
여러 컨테이너 일괄 삭제
docker-compose rm
Linux의 시그널
Linux에서는 프로그램을 실행할 때 파일에 쓰여 있는 프로그램을 읽어 들여 메모리상에 배치함
이 메모리상에 배치된 프로그램이 실행되면 '프로세스'가 됨
그리고 이 프로세스에 대해 명령을 송신할 수 있는데, 이 명령을 시그널이라고 함
시그널은 POSIX.1-1990 라는 규격으로 정의되어 있음
docker-compose 의 주요 서브 명령
지원하는 시그널 종류는 kill -l
명령으로 확인할 수 있음
| 시그널 | 설명 |
| --------- | --------------------------------------------- |
| SIGHUP
| 프로그램 재시작 |
| SIGINT
| 키보드로 인터럽트 CTRL+C
로 송신할 수 있음 |
| SIGQUIT
| 키보드에 의한 중지 CTRL+\
로 송신할 수 있음 |
| SIGTERM
| 프로세스 정상 종료 |
| SIGKILL
| 프로세스 강제 종료 |
| SIGSTOP
| 프로세스 일시 정지 |
여러 리소스의 일괄 삭제(down)
docker-compose.yml
정의 파일을 바탕으로 docker-compose up
명령으로 생성한 컨테이너 이미지를 모아서 삭제할 때 사용
실행 중인 컨테이너를 정지시키고, docker 이미지, 네트워크, 데이터 볼륨을 일괄 적으로 삭제함
docker-compose down 명령
docker-compose down [옵션]
지정할 수 있는 주요 옵션
시그널 | 설명 |
---|---|
--rmi all |
모든 이미지를 삭제 |
--rmi local |
커스텀 태그가 없는 이미지만 삭제 |
-v , --volumes |
Compose 정의 파일의 데이터 볼륨을 삭제 |
이미지 삭제 시 볼륨까지 삭제
이미지를 삭제 하면서 연결된 볼륨까지 삭제함
docker-compose down --volume
여러 이미지 삭제
docker-compose.yml
정의 파일에서 지정한 컨테이너를 정지시키고 모든 이미지를 삭제
docker-compose down --rmi all