[Docker] Docker Compose를 이용한 컨테이너 운용

2020. 12. 4. 14:12Docker

1. Docker Compose 버전 확인

Docker Compose는 도커 클라이언트 툴에 미리 설치되어있다.

docker-compose -v
docker-compose --version

 

 

 

2. Docker Compose 명령어

1) 기본 명령

명령 설명
up 컨테이너 생성/시작
ps 컨테이너 목록 출력
logs 컨테이너 로그 출력
run 컨테이너 실행
start 컨테이너 시작
stop 컨테이너 정지
restart 컨테이너 재시작
pause 컨테이너 일지 정지
unpause 컨테이너 재개
port 공개 포트 번호 출력
config 구성 확인
kill 실행 중인 컨테이너 강제 정지
rm 컨테이너 삭제
down 리소스 삭제

※ docker-compose 명령에 -f 옵션을 붙일 경우, 다른 장소에 위치한 docker-compose.yml 파일의 경로를 지정하여 사용할 수 있다.

2) 여러 컨테이너 생성

작성한 Compose 파일을 바탕으로 여러 개의 컨테이너를 생성하여 시작할 때 up 명령을 사용한다.

docker-compose up [옵션] [서비스명] .
옵션 설명
-d 백그라운드에서 실행
--no-deps 링크 서비스를 시작하지 않음
--build 이미지 빌드
--no-build 이미지 빌드를 하지 않음
-t, --timeout 컨테이너의 타임아웃을 초로 지정 (기본 10초)
--scale [서비스명= 수] 컨테이너를 생성할 개수 지정

3) 여러 컨테이너 확인

// 컨테이너 상태 확인
docker-compose ps
docker-compose ls

// 컨테이너 ID 확인
docker-compose ps -q

// 로그 확인
docker-compose logs

4) 컨테이너 명령 실행

// 컨테이너에서 명령 실행
docker-compose run [컨테이너명] /bin/bash

5) 여러 컨테이너 시작, 정지, 재시작, 일시 정지, 재개

// 컨테이너 시작
docker-compose start

// 컨테이너 정지
docker-compose stop

// 컨테이너 재시작
docker-compose restart

// 특정 컨테이너 재시작
docker-compose restart [컨테이너명]

// 컨테이너 일시 정지
docker-compose pause

// 컨테이너 재개
docker-compose unpause

6) 서비스 구성 확인

// 서비스의 공개용 포트 확인
docker-compose port [옵션] [서비스명] [프라이빗 포트 번호]

// 구성 확인
docker-compose config
옵션 설명
--protocol=proto 프로토콜, tcp 또는 udp
--index=index 컨테이너의 인덱스 수

7) 여러 컨테이너 강제 정지, 삭제

실행 중인 컨테이너를 강제로 정지할 때 kill 명령어를 통해 시그널을 보낸다. 시그널은 프로세스 간에 연락을 주고받기 위한 장치로 Linux 커널에 내장되어 있다. 실행 중인 프로세스의 처리를 멈추고 다른 프로세스를 처리하고 싶은 경우나 프로세스를 강제 종료시키고 싶을 때 사용한다.

// -s 옵션을 지정하지 않을 경우 SIGKILL이 송신
docker-compose kill -s SIGINT

// 일괄 삭제
docker-compose rm
시그널 설명
SIGHUP 프로그램 재시작
SIGINT 키보드 인터럽트 (Ctrl + c) 송신
SIGQUIT 키보드에 의한 중지 (Ctrl + \) 송신
SIGTERM 프로세스 정상 종료
SIGKILL 프로세스 강제 종료
SIGSTOP 프로세스 일시 정지

※ 지원하는 시그널의 종류는 'kill -i' 명령으로 확인할 수 있다.

 

8) 여러 리소스 일괄 삭제

실행 중인 컨테이너를 정지하고 도커 이미지, 네트워크, 데이터 볼륨을 일괄적으로 삭제한다.

docker-compose down [옵션]
옵션 설명
--rmi all 모든 이미지 삭제
--rmi local 커스텀 태그가 없는 이미만 삭제
-v, --volumes Compose 정의 파일의 데이터 볼륨 삭제

[참고] 완벽한 IT 인프라 구축을 위한 Docker (2판)

728x90