DEV ℧ Developer Diary

[Docker] 도커 컴포즈 (Docker Compose) 명령어에 대해 알아보자

해당 포스트는 inflearn에서 subicura님의 초보를 위한 도커 안내서의 강의를 듣고 정리한 문서입니다.

Docker-Compose 명령어

docker 에서 명령어로 컨테이너를 올리듯이, docker-compose.yml 파일도 명령어를 통해 일괄적으로 컨테이너를 관리 할 수 있다.

docker compose의 명령어를 간단하게 살펴보도록 하자.

docker의 명령어를 살펴보기 위해서는 아래의 명령어를 검색하면 로그로 출력해준다.

docker compose --help
  • Docker-Compose Docs

docker compose 명령어

주요 명령어

명령어 description example
up docker-compose에 정의된 컨테이너를 실행 docker compose up
start 멈춘 컨테이너를 재개 docker compose start [SERVICE]
restart 컨테이너 재시작 docker compose restart [SERVICE]
stop 컨테이너 멈춤 docker compose stop [SERVICE]
down 컨테이너를 종료하고 삭제 docker compose down
logs 컨테이너의 로그 출력 docker compose logs
ps 컨테이너의 목록 출력 docker compose ps
exec 실행중인 컨테이너에서 명령어 실행 docker compose exec [SERVICE] {명령어}
build 컨테이너 build 부분에 정의된 내용대로 빌드 docker compose build [SERVICE]
config docker-compose 파일 유효성 검사 및 설정 출력 docker compose config
kill 컨테이너를 죽입니다. docker compose kill [SERVICE]
rm 컨테이너를 종료하고 제거합니다. docker compose rm [SERVICE]

up

docker-compose.yml 에 정의된 컨테이너를 실행합니다.

$ docker-compose up [OPTION] [SERVICE]

[OPTIONS]

옵션 description
–detach, -d detached mode (백그라운드 모드)
–force-recreate 구성 및 이미지가 변경되지 않은 경우에도 컨테이너를 다시 만듭니다.
–build 컨테이너를 시작하기 전에 이미지를 빌드합니다.
–no-build 이미지를 빌드하지 않습니다.
–scale Service의 수를 지정합니다. scale Compose 파일이 있는경우 해당 설정을 재정의 합니다.
–timeout, -t 컨테이너 종료에 대한 제한시간을 설정합니다 (기본값 10초)
–timestamps 타임스탬프를 표시합니다.
–wait 서비스가 정상 실행될 때까지 기다립니다.

주로 사용하는 옵션은 -d로 해당 옵션을 설정하지 않으면, Ctrl + C로 실행을 빠져나왔을때 컨테이너가 모두 종료되기 때문이다.

$ docker compose up -d
[+] Running 3/3
 - Network docker_default        Created                                                                                                                                                                                    0.0s
 - Container docker-wordpress-1  Started                                                                                                                                                                                    0.9s
 - Container docker-db-1         Started

start

서비스에 대한 기존 컨테이너를 시작합니다.

$ docker compose start [SERVICE]

restart

중지 혹은 실행중인 모든 서비스 또는 지정된 서비스를 다시 시작합니다.

$ docker compose restart [OPTION] [SERVICE]

[OPTIONS]

옵션 description
–timeout, -t 컨테이너 종료에 대한 제한시간을 설정합니다 (기본값 10초)

stop

컨테이너를 제거하지 않고 실행중인 컨테이너를 중지합니다. docker compose start로 다시 실행할 수 있습니다.

$ docker compose stop [OPTIONS] [SERVICE...]

[OPTIONS]

옵션 description
–timeout, -t 컨테이너 종료에 대한 제한시간을 설정합니다 (기본값 10초)

down

컨테이너를 중지하고 docker compose up을 통해 생성한 컨테이너, network, volume, image를 제거합니다.

$ docker compose down [OPTIONS]

[OPTIONS]

옵션 description
–timeout, -t 컨테이너 종료에 대한 제한시간을 설정합니다 (기본값 10초)
-volumes,-v Compose 파일 섹션에 선언된 volumes과 컨테이너에 연결된 volume을 제거합니다.
–remove-orphans Compose 파일에 정의되지 않은 서비스의 컨테이너를 제거합니다.

logs

docker compose로 실행된 서비스의 로그를 출력합니다.

$ docker compose logs [OPTIONS] [SERVICE...]

[OPTIONS]

옵션 description
–follow, -f 서비스의 로그를 지속적으로 출력합니다.
–tail [n] 각 컨테이너의 로그를 끝에서 서비스별로 n줄씩 출력합니다.
–timestamps, -t 타임스탬프를 표시합니다.
$ docker-compose logs -f -t --tail 3
docker-wordpress-1  | 2023-02-04T08:02:32.554528596Z 127.0.0.1 - - [04/Feb/2023:08:02:32 +0000] "OPTIONS * HTTP/1.0" 200 126 "-" "Apache/2.4.54 (Debian) PHP/8.0.27 (internal dummy connection)"
docker-db-1         | 2023-02-04T08:01:49.048400234Z 2023-02-04  8:01:49 0 [Note] Server socket created on IP: '::'.
docker-wordpress-1  | 2023-02-04T08:02:33.555865915Z 127.0.0.1 - - [04/Feb/2023:08:02:33 +0000] "OPTIONS * HTTP/1.0" 200 126 "-" "Apache/2.4.54 (Debian) PHP/8.0.27 (internal dummy connection)"
docker-db-1         | 2023-02-04T08:01:49.133181903Z 2023-02-04  8:01:49 0 [Note] mariadbd: ready for connections.
docker-db-1         | 2023-02-04T08:01:49.133215550Z Version: '10.9.4-MariaDB-1:10.9.4+maria~ubu2204'  socket: '/run/mysqld/mysqld.sock'  port: 3306  mariadb.org binary distribution
docker-wordpress-1  | 2023-02-04T08:02:35.558562261Z 127.0.0.1 - - [04/Feb/2023:08:02:35 +0000] "OPTIONS * HTTP/1.0" 200 126 "-" "Apache/2.4.54 (Debian) PHP/8.0.27 (internal dummy connection)"

ps

Docker Compose로 실행된 컨테이너를 현재 상태 및 포트정보를 함께 나열합니다. 기본적으로 실행중인 컨테이너와 중지된 컨테이너가 모두 표기됩니다.

$ docker compose ps [OPTIONS] [SERVICE...]

[OPTIONS]

옵션 description
–all,-a 중지된 모든 컨테이너 표시(run 명령으로 생성된 컨테이너 포함)
–filter status 의 소성별로 서비스를 필터링하여 출력합니다.
–status 상태별로 서비스를 필터링합니다.
값: [paused, restarting, removing, running, dead, created, exited]

exec

docker exec 와 동일하며, Docker Compose에서 실행된 서비스에 명령을 실행할 수 있습니다.

$ docker compose exec [OPTIONS] SERVICE COMMAND [ARGS...]

[OPTIONS]

옵션 description
–detach,-d 분리 모드: 백그라운드에서 명령을 실행합니다.
–env,-e 환경 변수 설정 추가
–index [n] 서비스의 여러 인스턴스가 있는경우 컨테이너의 인덱스를 선택합니다. (기본값 1)
–user,-u 여러 사용자가 있을경우 명령을 실행할 사용자 정보를 선택합니다.

build

컨테이너 build 부분에 정의된 내용대로 빌드 합니다.

docer-compose.yml 또는 dockerFile에 정의된 빌드의 내용을 변경하는 경우 해당 명령어를 실행하여 재빌드 합니다.

$ docker compose build [OPTIONS] [SERVICE...]

[OPTIONS]

옵션 description
–build-arg 서비스의 빌드에 대한 시간 변수를 설정합니다.
–memory,-m 빌드 컨테이너의 메모리 제한을 설정합니다.
–no-cache 이미지를 빌드할 때 캐시를 사용하지 않습니다.
–pull 빌드시 항상 최신 버전의 이미지를 가져옵니다.

config

docker-compose 파일의 유효성을 검사하고, 설정한대로 출력합니다.

$ docker compose config

kill

docker-compose에 정의된 서비스의 컨테이너를 강제로 중지합니다.

$ docker compose kill [OPTIONS] [SERVICE...]

[OPTIONS]

옵션 description
–remove-orphans docker-compose 파일에 정의되지 않은 서비스의 컨테이너를 제거합니다.

rm

중지된 서비스의 컨테이너를 제거합니다.

$ docker compose rm [OPTIONS] [SERVICE...]

[OPTIONS]

옵션 description
–force,-f 강제 옵션 설정
–stop,-s 컨테이너를 제거하기 전에 중지합니다.
–volumes,-v 컨테이너에 연결된 volume을 제거합니다.

-f

-f 옵션을 사용해서 여러 Docker Compose 구성 파일을 지정할 수 있습니다.

$ docker compose -f docker-compose.yml -f docker-compose.admin.yml run backup_db