About/Docker

[Docker] Docker-Compose 주요 명령어 총정리

김징어 2021. 12. 13. 23:02

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 실행 결과

컨테이너를 백그라운드로 실행하는 경우

$ docker compose up -d

 

컨테이너 시작 시 Dockerfile을 빌드하고 싶은 경우

$ docker-compose up --build

 

컨테이너 생성할 개수를 지정하는 경우

$ docker-compose up --scale server_a=10 --scale server_b=20

 

--scale 옵션을 이용하여 여러 개의 컨테이너 생성

 


여러 리소스의 일괄 삭제(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

 

docker-compose down --rmi all 실행 결과


여러 컨테이너 확인(ps/logs)

Docker Compose는 여러 개의 컨테이너가 연결되어 작동하는데, 이러한 컨테이너의 목록을 표시하는 경우 docker-compose ps 명령어 사용

$ docker-compose ps

 

docker-compose ps의 결과

-q 옵션을 사용하면 컨테이너 ID만 출력(quite 옵션)

$ docker-compose ps -q

 

-q 옵션을 부여한 경우

Docker 명령어을 사용해서 확인할 수도 있다. (결국 Docker 컨테이너이기 때문)

$ docker container ls (혹은 docker ps)

 

Docker 명령어를 이용한 컨테이너 확인

 

컨테이너의 로그를 확인하는 경우 docker-compose logs 명령어를 사용

$ 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

docker-compose run 결과

 


여러 컨테이너 시작/정지/재시작(start/stop/restart)

Docker Compose를 사용하면 여러 개의 서비스를 일괄적으로 시작/일시 정지/정지/재시작할 수 있습니다.

 

$ docker-compose start
$ docker-compose stop
$ docker-compose restart

 

특정 컨테이너만 조작하고 싶은 경우 명령의 인수에 서비스명을 지정합니다.

$ docker-compose stop server_a

 

server_a 서비스만 정지하는 명령어

 

여러 컨테이너 일시 정지/재개(pause/unpause)

$ docker-compose pause
$ docker-compose unpause

마찬가지로 서비스명을 지정하면 특정 서비스만 일시정지/재개할 수 있습니다.

$ docker-compose pause server_b

 

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

 

docker-compose port 결과

또한 Compose의 구성을 확인할 때는 docker-compose config 명령을 사용합니다.

$ 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로 컨테이너에 SIGIN 시그널을 송신한 결과

 

생성한 여러 컨테이너를 삭제할 때는 docker-compose rm 명령을 실행합니다. 

$ docker-compose rm

 

docker-compose rm 결과


 

다음 도서를 참고하여 작성하였습니다.

www.aladin.co.kr/shop/wproduct.aspx?ItemId=166082298

 

완벽한 IT 인프라 구축을 위한 Docker

컨테이너 기술을 사용한 애플리케이션 실행 환경 플랫폼인 ‘Docker’를 사용하여 인프라를 구축하기 위한 입문서. 제2판에서는 Docker의 새로운 기능 및 명령과 더불어, 멀티호스트 환경에서 실행

www.aladin.co.kr

 

 

 

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

 


+

열심히 블로그 활동을 하다보니 저도 협찬을 받았는데요! (처음이라 덜덜,,)  바로바로!

 

 

도커 컨테이너 각티슈 휴지 케이스 입니다!!  너무 귀엽지 않나요??
흰색 색상도 있지만 최대한 컨테이너같이 보이도록 회색 색상으로 선택하여 선물받았습니다!
저의 검정책상과 너무 잘 어울리는 것 같습니다 ㅎㅎ

 

 

입체감 보이시나요?? 진짜 컨테이너라고 해도 믿을 것 같아요.
두세개 더 구매해서 쌓아놓고 쿠버네티스처럼 구성해도 귀여울 것 같습니다 ㅋㅋ

 

Docker를 공부해보신 분이라면 싫어할 수가 없을듯 합니다.
행사 사은품이나 개발자 분들에게 선물용으로도 좋을 것 같아요!

 

https://incatos.shop/surl/P/11

 

도커 컨테이너 각티슈 휴지 케이스 티슈커버 사각 아크릴 각티슈 커버 - 푸르가즘

교환 및 반품 주소  -   교환 및 반품이 가능한 경우  - 계약내용에 관한 서면을 받은 날부터 7일. 단, 그 서면을 받은 때보다 재화등의 공급이 늦게 이루어진 경우에는 재화등을 공급받거나

incatos.shop