본문으로 건너뛰기

[Docker] Docker Completion 설정

Docker 20.10부터 docker-ce 저장소가 deprecated되어, docker/cli 저장소의 completion 파일로 Bash 자동 완성을 설정하는 방법입니다.

요약

  • Docker 20.10부터 docker-ce 저장소가 deprecated되었으므로 docker completion 파일은 docker/cli 저장소에서 받아야 합니다.
  • docker/cli의 contrib/completion/bash/docker 파일을 /etc/bash_completion.d/docker로 내려받으면 docker <tab> 자동 완성이 동작합니다.

Docker Completion 설정 (자동 완성)

최근 Podman 만 사용하다가 오랜만에 Docker 를 설치하면서 변경된 부분이 있는데 따로 공식 문서나 자료가 없어서 관련하여 작성해본다.

변경된 이유

Docker CE (https://github.com/docker/docker-ce)
⚠️ This repository is now deprecated and will be archived (Docker CE itself is NOT deprecated) ⚠️
Starting with the Docker 20.10 release, packages for the Docker Engine and Docker CLI are built directly from their respective source repositories instead of from this repository.

기존에 사용중이던 docker-ce repository 에서 위와 같이 Docker 20.10 version 이 되면서 repository 가 변경 되었다.
그래서 아래와 같이 docker/cli repository 에서 해당 completion file 을 이용하여 설정해야된다.

설정

아래와 같은 방법으로 최신 docker completion 을 추가 할 수 있다.
(Bash 기준으로 작성)

$ sudo curl -L https://raw.githubusercontent.com/docker/cli/master/contrib/completion/bash/docker -o /etc/bash_completion.d/docker

$ sudo docker <tab>
attach     commit     context    diff       export     image      info       load       logs       node       port       push       rm         save       service    stats      system     trust      version
build      config     cp         events     help       images     inspect    login      manifest   pause      ps         rename     rmi        search     stack      stop       tag        unpause    volume
builder    container  create     exec       history    import     kill       logout     network    plugin     pull       restart    run        secret     start      swarm      top        update     wait

참고 자료

자주 묻는 질문

최신 Docker에서 Bash 자동 완성을 설정하려면 어떻게 하나요?

sudo curl -L https://raw.githubusercontent.com/docker/cli/master/contrib/completion/bash/docker -o /etc/bash_completion.d/docker로 completion 파일을 내려받습니다. 이후 docker <tab>으로 하위 명령이 자동 완성됩니다.

예전처럼 docker-ce 저장소에서 completion 파일을 받으면 안 되나요?

Docker 20.10부터 Docker Engine과 CLI 패키지가 각 소스 저장소에서 직접 빌드되면서 docker-ce 저장소는 deprecated되었습니다. 그래서 docker/cli 저장소의 completion 파일을 사용해야 합니다.

Bash 외의 다른 Shell용 Docker completion 파일도 있나요?

있습니다. docker/cli 저장소의 contrib/completion 경로에서 Bash, Zsh, fish, powershell용 파일을 제공합니다.