[Docker Compose] Compose Commands

whatSup CheatSheet·2022년 10월 21일
0

Container

목록 보기
8/9
post-thumbnail
post-custom-banner

Compose 설치

docs를 참고하여 설치를 진행한다.

sudo apt-get update
sudo apt-get install docker-compose-plugin

Compose Commands

Overview

본 명령어는 Compose V2를 기준으로 작성함.

  • docker compose 사용법 : docker compose COMMAND

docker compose —help

-f 옵션

-f옵션을 사용하여 Compose 파일을 직접 지정할 수 있다.

  • -f옵션을 사용하지 않으면, Compose는 compose.yml파일을 찾기 위해 작업 디렉토리와 부모 티렉토리를 탐색함.
  • -f옵션을 여러 번 사용하여 여러 Compose파일을 제공할 수 있음
    • 이때, Compose 파일을 제공한 순서대로 빌드를 진행함.
docker compose -f docker-compose.yml -f docker-compose.admin.yml run backup_db
  • 모든 경로는 현재 작업 디렉토리를 기준으로 상대경로를 사용함.
  • -f옵션 뒤에 절대경로를 지정하여 사용할 수 있음

--profile옵션

—profile을 통해 Compose 파일에서 profile이 등록된 서비스를 활성화시킬 수 있다.

  • 등록이 안 된 서비스들은 자동으로 활성화됨
  • 여러 프로필을 활성화할 수 있음
docker compose --profile frontend --profile debug up

pull

docker compose pull [OPTIONS] [SERVICE...]

docker-compose.yml 내에 명시한 서비스의 이미지를 pull 해온다.

  • 옵션
명령어설명
--ignore-pull-failurespull이 실패할 경우 무시
--include-deps종속성으로 선언된 이미지를 가져옴
--quiet , -qSTDOUT 없이 빌드함
  • ex) 서비스 이름이 db일 경우, docker compose pull db를 입력하면 해당하는 이미지를 pull해옴

build

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

docker-compose.yml 내에 명시한 서비스를 빌드하거나 re-build함

  • 옵션
명령어설명
--build-argbuild에서 사용하는 arg를 설정
--no-cache빌드 시 캐시를 사용하지 않음
--pull항상 최신 버전의 이미지를 가져옴
--quiet , -qSTDOUT 없이 빌드함

up

docker compose up [OPTIONS] [SERVICE...]

Docker Compose에 정의되어 있는 모든 서비스 컨테이너를 한 번에 생성하고 실행한다.

  • up프로세스 순서
    1. 서비스 네트워크 설정
    2. (볼륨 생성) & 볼륨 연결
    3. 필요한 이미지 pull
    4. 필요한 이미지 build
    5. 의존성에 따라 서비스 실행
  • 옵션
명령어Default설명
--attach서비스 출력에 연결
--attach-dependencies종속 컨테이너에 연결
--build컨테이너 시작 전에 이미지를 빌드함
--detach , -d백그라운드 모드 적용
--force-recreate이미지나 구성이 변경되지 않았더라도 다시 create함
--no-build이미지가 없어도, 빌드하지 않음
--no-depslink된 서비스를 시작하지 않음
--no-recreate컨테이너가 이미 있는 경우 다시 만들지 않음 (—force-recreate와 같이 사용 못함)
--no-start서비스를 만들고, 시작하지 않음
--pullmissingrunning하기 전에 이미지를 pull 할 지 결정 ("always"
--quiet-pull조용히 pull함
--remove-orphanscompose 파일에 정의되지 않은 서비스의 컨테이너 제거
--timeout , -t10컨테이너의 타임아웃을 지정(기본 10초)

ps

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

Compose의 컨테이너 목록을 표시한다.

  • 모든 컨테이너를 확인하고 싶다면 뒤에 service를 명시하지 않으면 됨
  • 컨테이너 목록은 docker 명령어로도 확인할 수 있음
  • 옵션
명령어Default설명
--all , -a중지된 서비스까지 모두 표시
--formatpretty출력 형식을 지정
--quiet , -q컨테이너 id만 출력
--services서비스들을 보여줌
--status상태별로 필터링함. 상태: [paused
  • 예시
docker compose ps --format json | jq .

# 아래는 출력
[
  {
    "ID": "1553b0236cf4d2715845f053a4ee97042c4f9a2ef655731ee34f1f7940eaa41a",
    "Name": "example-bar-1",
    "Command": "/docker-entrypoint.sh nginx -g 'daemon off;'",
    "Project": "example",
    "Service": "bar",
    "State": "exited",
    "Health": "",
    "ExitCode": 0,
    "Publishers": null
  },
  {
    "ID": "f02a4efaabb67416e1ff127d51c4b5578634a0ad5743bd65225ff7d1909a3fa0",
    "Name": "example-foo-1",
    "Command": "/docker-entrypoint.sh nginx -g 'daemon off;'",
    "Project": "example",
    "Service": "foo",
    "State": "running",
    "Health": "",
    "ExitCode": 0,
    "Publishers": [
      {
        "URL": "0.0.0.0",
        "TargetPort": 80,
        "PublishedPort": 8080,
        "Protocol": "tcp"
      }
    ]
  }
]

logs

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

명시한 서비스의 로그를 출력한다.

  • 모든 컨테이너를 확인하고 싶다면 뒤에 service를 명시하지 않으면 됨
  • 옵션
명령어Default설명
--follow , -flogs를 계속적으로 follow한다.
--no-color흑백으로 출력
--since명시한 시간 이후의 로그를 출력(e.g. 2013-01-02T13:23:37Z : 해당하는 시간부터 출력) (e.g. 42m : 42분 전부터 출력)
--until명시한 시간까지의 로그를 출력(—since와 같은 양식)
--tailall컨테이너 로그 끝에서부터 표시할 로그의 개수
--timestamps , -ttimestamp를 출력함

run

docker compose run [OPTIONS] SERVICE [COMMAND] [ARGS...]

새로운 서비스 컨테이너를 실행하고, 특정 명령어를 일회성으로 실행한다.

  • 옵션
명령어Default설명
--detach , -d백그라운드에서 실행
--entrypointentrypoint를 재정의
--env , -e환경변수를 설정
--interactive , -itrueinteractive한 모드 적용
--label , -llabel을 재정의
--name컨테이너에 이름을 할당
--publish , -p포트를 지정
--quiet-pull필요할 경우 조용히 pull을 진행
--rmexits될 경우 컨테이너를 제거
--tty , -ttruetty를 활성화함
--user , -u지정 유저로 명령을 실행
--volume , -v볼륨을 마운트시킴
--workdir , -w작업공간을 명시

start

docker compose start [SERVICE...]

내려가있는 특정 컨테이너를 시작시킴

  • docker compose up을 해주어도 됨

stop

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

컨테이너를 제거하지 않고 실행만 중지함

  • 그러나 실행중인 모든 프로세스를 kill함(메모리 제거)
    • 메모리를 유지하고 싶으면 pause를 사용해야 함

restart

docker compose restart [OPTIONS] [SERVICE...]

서비스 컨테이너를 재시작함

  • 모든 서비스를 재시작하려면 Service를 명시하지 않으면 됨

pause / unpause

docker compose pause [SERVICE...]

docker compose unpause [SERVICE...]

서비스를 일시중지하거나 일시중지를 해제한다.

  • stop과 달리 실행중인 프로세스를 kill하지 않고 유지(메모리가 유지됨)

cp

서비스 컨테이너와 로컬 파일 시스템 간에 파일이나 폴더 복사함.

  • from container

docker compose cp [OPTIONS] SERVICE_container:SRC_PATH DEST_PATH

  • to container

docker compose cp [OPTIONS] SRC_PATH SERVICE_container:DEST_PATH

  • container → container

docker compose cp [OPTIONS] SERVICE_container:SRC_PATH SERVICE_container:DEST_PATH

exec

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

실행중인 서비스 컨테이너에서 명령을 실행한다. (실행되어있는 컨테이너에서 실행)

  • 기본적으로 docker exec와 동일함
  • 옵션
명령어Default설명
--detach , -d백그라운드에서 명령 실행
--env , -e환경변수 설정
--interactive , -itrueinteractive 한 모드에서 실행
--privileged프로세스에 확장된 권한 부여
--tty , -ttruetty를 활성화함
--user , -u지정 유저로 명령을 실행
--workdir , -w명령을 실행할 작업공간을 명시

config

kill

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

실행중인 컨테이너에 신호를 보내어 강제로 정지시킨다.

  • 옵션
명령어Default설명
--remove-orphansCompose 파일에 정의되지 않은 서비스의 컨테이너를 제거
--signal , -sSIGKILL보낼 신호를 명시

rm

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

중지된 서비스 컨테이너를 제거함.

  • 옵션
명령어설명
--force , -f강제로 제거(제거 확인 메세지를 출력하지 않음)
--stop , -s컨테이너를 제거하기 전에 중지시킨다.
--volumes , -v컨테이너에 연결된 모든 익명으로된 볼륨을 제거함

down

docker compose down [OPTIONS]

모든 서비스 컨테이너를 중지하고, 리소스(컨테이너, 볼륨, 네트워크, up으로부터 만들어진 이미지)를 삭제한다.

  • external 리소스는 삭제되지 않음.
  • 옵션
명령어Default설명
--rmi“all”은 모든 이미지를 삭제하지만, “local”로 하면 태그가 없는 이미지만 삭제함
--volumes , -vCompose 파일의 볼륨 섹션에서 정의했던 볼륨을 삭제

Reference

https://docs.docker.com/compose/reference/

profile
AI Engineer : Lv 0
post-custom-banner

1개의 댓글

comment-user-thumbnail
2023년 2월 21일

안녕하세요 운영자님
인카토스입니다.
먼저, 댓글로 인사를 드리게 된 점 양해 부탁 드립니다.
이렇게 연락 드린 이유는 이번에 저희가 제작한 도커 각티슈케이스 제품 협찬을 제안드리고 싶어서 연락 드렸습니다.
개발자들에게 많은 사랑은 받은 각티슈케이스입니다.
저희 상품 블로그 포스팅이 가능하실지 여쭙고자 연락드렸습니다.
아니면 클리앙,서버포럼, okky,2cpu,그누보드 등 가입되어 있으신 개발자 커뮤니티가 있으시다면 해당 커뮤니티에 아래와 비슷하게 게시글을 올려주실수 있을까요?

클리앙 : https://www.clien.net/service/board/park/17797443

연락드릴수 있는방법이 댓글밖에 보이지 않아 이렇게 먼저 연락드립니다.

협찬제안에 긍정적인 검토 부탁드리고 제안이 마음에 드신다면 하기 메일로 메일주시면 제품 보내드리도록 하겠습니다.

sungjh0726@naver.com

협찬제품 링크 : https://incatos.shop/surl/P/11

답글 달기