Docker

[Docker] 7-4. 도커 컴포즈 실행

patrick-star 2023. 5. 31. 22:44
728x90

도커 컴포즈 커맨드

컴포즈 파일을 작성했으니 도커 컴포즈 커맨드를 실행해야 한다.

도커 컴포즈는 docker-compose 명령을 사용한다. 자주 사용하는 건 up과 down이고 종종 stop도 사용한다. 각 커맨드에 대해 살펴보겠다.

docker-compose up 커맨드 : 컨테이너와 주변 환경을 생성

컴포즈 파일의 내용에 따라 컨테이너와 볼륨, 네트워크를 생성하고 실행한다. 컴포즈 파일의 경로는 -f 옵션을 사용해서 지정한다.
(-f 옵션이 없다면 현재 작업 디렉토리를 경로로 설정한다)

docker-compose -f 정의_파일_경로 up 옵션 

ex) docker-compose -f C:/Users/Documents/docker-compose.yml up -d 
옵션 내용
-d 백그라운드로 실행
--no-color 화면 출력 내용을 흑백으로 함
--no-deps 링크된 서비스를 실행하지 않음
--force-recreate 설정 또는 이미지가 변경되지 않더라도 컨테이너를 재생성
--no-create 컨테이너가 이미 존재하는 경우 다시 생성하지 않음
--build 컨테이너를 실행하기 전에 이미지를 빌드
--abort-on-container-exit 컨테이너가 하나라도 종료되면 모든 컨테이너를 종료
-t, --timeout 컨테이너를 종료할 때의 타임아웃 설정. 기본은 10초
--remove-orphans 컴포즈 파일에 정의되지 않은 서비스의 컨테이너를 삭제
--scale 컨테이너의 개수를 변경

docker-compose down 커맨드 : 컨테이너와 네트워크를 삭제

컴포즈 파일의 내용에 따라 컨테이너와 네트워크를 종료 및 삭제한다. 볼륨과 이미지는 삭제되지 않는다.
마찬가지로 경로는 -f 옵션으로 지정한다.

docker-compose -f 정의_파일_경로 down 옵션 

ex) docker-compose -f C:/Users/Documents/docker-compose.yml down -d 
옵션 내용
--rmi 종류 삭제 시 이미지도 함께 삭제한다. all이라 하면 사용했던 모든 이미지가 삭제된다. local이라 하면 커스텀 태그가 없는 이미지만 삭제된다
-v, --volumes volumes 항목에 기재된 볼륨을 삭제한다.(단, external로 지정된 볼륨은 삭제되지 않는다
--remove-orphans 컴포즈 파일에 정의되지 않은 서비스의 컨테이너도 삭제한다

docker-compose stop 커맨드 : 컨테이너의 종료

컴포즈 파일의 내용에 따라 컨테이너를 종료한다. 마찬가지로 -f 옵션을 이용해서 컴포즈 파일의 경로를 지정한다.

docker-compose -f 컴포즈_파일_경로 stop 옵션 

그 외 여러 가지 커맨드

도커 컴포즈로 실행한 컨테이너 이름

docker compose로 실행한 컨테이너 역시 도커 엔진을 통해 관리할 수 있다. 여기서 주의할 점은 도커 컴포즈로 실행한 컨테이너의 이름은 임의로 결정된다는 점이다.

ex) com_folder에 위치한 컴포즈 파일을 사용해 penguin 컨테이너를 생성

⇒ 도커 컴포즈가 실제로 생성한 컨테이너의 이름은 com_folder_penguin_1과 같이 폴더 이름번호가 붙는다.
(-f 옵션을 생략했다면 폴더 이름은 붙지 않는다.)

하지만, 위와 같이 폴더 이름번호가 붙어도
도커 컴포즈를 통해 컨테이너를 지정할 때는 기존에 컴포즈 파일에 기재한 원래 이름을 사용할 수 있다.

이렇게 번호가 붙은 컨테이너 이름은 도커 엔진을 통해 컨테이너를 관리하거나 같은 구성의 컨테이너를 여러 세트 실행했을 때 사용된다. 따라서, 도커 엔진을 통해 컨테이너를 다룰 때 ps 커맨드를 이용해서 컨테이너의 실제 이름을 확인해야 한다.