[Docker] Docker-Compose 주요 명령어 총정리
docker-compose 1.29.2, docker 20.10.8 버전에서 실행하였으며, 본문 내용이 길어 원하는 부분만 검색하여 보시는 걸 추천드립니다.
Docker Compose의 주요 서브 명령어
서브명령 | 설명 |
up | 컨테이너 생성/시작 |
ps | 컨테이너 목록 표시 |
logs | 컨테이너 로그 출력 |
run | 컨테이너 실행 |
start | 컨테이너 시작 |
stop | 컨테이너 정지 |
restart | 컨테이너 재시작 |
pause | 컨테이너 일시 정지 |
unpause | 컨테이너 재개 |
port | 공개 포트 표시 |
config | 구성 확인 |
kill | 실행 중인 컨테이너 강제 정지 |
rm | 컨테이너 삭제 |
down | 리소스 삭제 |
docker-compose 명령은 docker-compose.yml을 저장한 디렉토리에서 실행됩니다. 만약 커런트 디렉토리 이외의 장소에 docker.compose.yml을 놓아둔 경우 -f 옵션으로 파일 경로를 지정하여야 합니다.
여러 컨테이너 생성(up)
작성한 docker-compose.yml을 바탕으로 여러 개의 컨테이너를 생성하여 시작할 때는 docker-compose up 명령을 사용합니다.
docker-compose up [옵션] [서비스명]
지정할 수 있는 주요 옵션(docker container와 유사합니다.)
옵션 | 설명 |
-d | 백그라운드에서 실행 |
--no-deps | 링크 서비스를 시작하지 않음 |
--build | 이미지를 빌드 |
--no-build | 이미지를 빌드하지 않음 |
-t, --timeout | 컨테이너의 타임아웃을 초로 지정(기본 10초) |
--scale SERVICE=서비스 수 | 서비스 수를 지정한다. |
예시)
# docker-compose.yml
version: '3.3
services:
server_a:
image: nginx
server_b:
image: redis
docker-compose.yml 파일이 존재하는 디렉토리에서 다음과 같이 실행
$ docker-compose up
컨테이너를 백그라운드로 실행하는 경우
$ docker compose up -d
컨테이너 시작 시 Dockerfile을 빌드하고 싶은 경우
$ docker-compose up --build
컨테이너 생성할 개수를 지정하는 경우
$ docker-compose up --scale server_a=10 --scale server_b=20
여러 리소스의 일괄 삭제(down)
Compose 정의 파일을 바탕으로 docker-compose up 명령으로 생성한 컨테이너나 Docker 이미지를 모아서 삭제할 때는 docker-compose down 명령어를 사용합니다. docker-compose down 명령은 실행 중인 컨테이너를 정지시키고, Docker 이미지, 네트워크, 데이터 볼륨을 일괄적으로 삭제합니다.
$ docker-compose down [옵션]
지정가능한 주요 옵션
옵션 | 설명 |
--rmi all | 모든 이미지를 삭제 |
--rmi local | 커스텀 태그가 없는 이미지만 삭제 |
-v, --volumes | Compose 정의 파일의 데이터 볼륨을 삭제 |
Compose 정의 파일에서 지정한 컨테이너를 정지시키고 모든 이미지를 삭제하는 경우
$ docker-compose down --rmi all
여러 컨테이너 확인(ps/logs)
Docker Compose는 여러 개의 컨테이너가 연결되어 작동하는데, 이러한 컨테이너의 목록을 표시하는 경우 docker-compose ps 명령어 사용
$ docker-compose ps
-q 옵션을 사용하면 컨테이너 ID만 출력(quite 옵션)
$ docker-compose ps -q
Docker 명령어을 사용해서 확인할 수도 있다. (결국 Docker 컨테이너이기 때문)
$ docker container ls (혹은 docker ps)
컨테이너의 로그를 확인하는 경우 docker-compose logs 명령어를 사용
$ docker-compose logs
컨테이너에서 명령 실행(run)
Docker Compose로 시작한 컨테이너에서 임의의 명령을 실행하고 싶을 때는 docker-compose run 명령을 사용합니다.
예시4) docker-compose up 명령을 사용하여 시작한 server_a 컨테이너 /bin/bash를 실행
$ docker-compose run server_a /bin/bash
여러 컨테이너 시작/정지/재시작(start/stop/restart)
Docker Compose를 사용하면 여러 개의 서비스를 일괄적으로 시작/일시 정지/정지/재시작할 수 있습니다.
$ docker-compose start
$ docker-compose stop
$ docker-compose restart
특정 컨테이너만 조작하고 싶은 경우 명령의 인수에 서비스명을 지정합니다.
$ docker-compose stop server_a
여러 컨테이너 일시 정지/재개(pause/unpause)
$ docker-compose pause
$ docker-compose unpause
마찬가지로 서비스명을 지정하면 특정 서비스만 일시정지/재개할 수 있습니다.
$ docker-compose pause server_b
서비스의 구성 확인(port/config)
서비스의 공개용 포트를 확인할 때는 docker-compose port 명령을 사용합니다.
$ docker-compose port [옵션] <서비스명> <프라이빗 포트 번호>
지정가능한 옵션
옵션 | 설명 |
--protocol=proto | 프로토콜, tcp 또는 udp |
--index=index | 컨테이너의 인덱스 수 |
# docker-compose.yml
services:
redis:
image: redis
webserver:
image: nginx
ports:
- 80:80/tcp
version: '3.3'
다음과 같이 구성된 docker-compose.yml 파일이 있다고 가정할 때
webserver라는 이름의 서비스의 80번 포트에 할당되어 있는 설정을 확인하려면 다음과 같이 실행합니다.
$ docker-compose port webserver 80
또한 Compose의 구성을 확인할 때는 docker-compose config 명령을 사용합니다.
$ docker-compose config
여러 컨테이너 강제 정지/삭제(killrm)
실행 중인 컨테이너를 강제로 정지시킬 때는 docker-compose kill 명령을 사용합니다. 이 명령어를 사용하면 컨테이너에게 시그널을 송신할 수 있습니다.(Linux의 시그널, SIGHUP, SIGKILL, SIGSTOP 등등..)
옵션을 지정하지 않고 docker-compose kill를 실행하면 SIGKILL이 송신되며 -s [시그널 종류] 옵션으로 시그널을 지정할 수 있습니다.
$ docker-compose kill -s SIGINT
생성한 여러 컨테이너를 삭제할 때는 docker-compose rm 명령을 실행합니다.
$ docker-compose rm
다음 도서를 참고하여 작성하였습니다.
www.aladin.co.kr/shop/wproduct.aspx?ItemId=166082298
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
+
열심히 블로그 활동을 하다보니 저도 협찬을 받았는데요! (처음이라 덜덜,,) 바로바로!
도커 컨테이너 각티슈 휴지 케이스 입니다!! 너무 귀엽지 않나요??
흰색 색상도 있지만 최대한 컨테이너같이 보이도록 회색 색상으로 선택하여 선물받았습니다!
저의 검정책상과 너무 잘 어울리는 것 같습니다 ㅎㅎ
입체감 보이시나요?? 진짜 컨테이너라고 해도 믿을 것 같아요.
두세개 더 구매해서 쌓아놓고 쿠버네티스처럼 구성해도 귀여울 것 같습니다 ㅋㅋ
Docker를 공부해보신 분이라면 싫어할 수가 없을듯 합니다.
행사 사은품이나 개발자 분들에게 선물용으로도 좋을 것 같아요!
https://incatos.shop/surl/P/11