[Docker] 도커 컴포즈 (Docker Compose) 명령어에 대해 알아보자
04 Feb 2023해당 포스트는 inflearn에서 subicura님의 초보를 위한 도커 안내서의 강의를 듣고 정리한 문서입니다.
Docker-Compose 명령어
docker 에서 명령어로 컨테이너를 올리듯이, docker-compose.yml 파일도 명령어를 통해 일괄적으로 컨테이너를 관리 할 수 있다.
docker compose의 명령어를 간단하게 살펴보도록 하자.
docker의 명령어를 살펴보기 위해서는 아래의 명령어를 검색하면 로그로 출력해준다.
docker compose --help
- Docker-Compose Docs
주요 명령어
명령어 | 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