[Docker] docker compose 명령어
`docker compose up`만 계속 써오다가 `down` 명령어를 알게 되어 정리해 본다.
docker compose down
$ docker-compoese down [OPTIONS] [SERVICES]
실행 중인 컨테이너를 멈추고(stop) `up` 으로 생성된 컨테이너, 네트워크, 볼륨, 이미지들을 제거한다(remove).
컨테이너가 삭제되는 것이므로 당연히 데이터도 다 지워진다.
디폴트로 제거되는 것들
- `compose` 파일에 정의된 서비스에 대한 컨테이너
- `compose` 파일의 `network` 섹션에 정의된 네트워크
- 기본 네트워크(사용되는 경우)
단, 외부에서 정의된 네트워크와 볼륨은 절대 제거되지 않는다.
docker compose stop/start
컨테이너를 삭제하고 싶지 않고, 멈추고만 싶다면 아래 명령어를 사용하자.
$ docker-compose stop [OPTIONS] [SERVICE...]
이렇게 멈춘 컨테이너는 아래 명령을 통해 다시 시작할 수 있다.
$ docker-compose start [SERVICE...]
docker compose build/up
아래 명령어는 `compose` 파일에서 필요한 이미지를 찾아서 빌드한다.
$ docker compose build [OPTIONS] [SERVICE...]
- 서비스가 빌드되고 나면 `project_service` 형식으로 태그 된다.
- `compose` 파일이 이미지 이름을 지정한다면, 이미지는 해당 이름으로 태그 되며 사전에 변수를 대체한다.
- 서비스의 `Dockerfile`이나 빌드 디렉토리의 내용을 변경했다면, 다시 빌드하기 위해 해당 명령어를 실행해야 한다.
아래 명령어는 `compose` 파일에서 서비스에 필요한 모든 컨테이너를 생성한 후 시작한다.
$ docker-compose up [OPTIONS] [SERVICE...]
명령이 종료되면 모든 컨테이너가 멈춘다. `up` 뒤에 `--detach` 옵션을 추가하면 컨테이너가 백그라운드에서 시작되므로 실행 상태를 유지할 수 있다.
에러가 발생하는 경우, 해당 명령의 종료 코드는 `1`이다. `SIGINT`(ctrl + c) 나 `SIGTERM`를 사용하여 중지시키는 경우, 컨테이너는 중지되며, 종료 코드는 `0`이다.
모든 이미지를 새로 빌드하여 컨테이너를 생성할 경우 아래 명령어를 사용한다. 보통 소스 코드 수정이 있는 경우, 이미지를 다시 빌드해야 하므로 아래처럼 진행한다.
$ docker-compose up --build // 도커 이미지 빌드 후 up
docker docs
`down` : https://docs.docker.com/engine/reference/commandline/compose_down/
`stop` : https://docs.docker.com/engine/reference/commandline/compose_stop/
`start` : https://docs.docker.com/engine/reference/commandline/compose_start/
`build` : https://docs.docker.com/engine/reference/commandline/compose_build/
`up` : https://docs.docker.com/engine/reference/commandline/compose_up/
참고