Bash Completion for Docker and Kubectl
有句話說的好:「工欲善其事,必先利其器」。使用 docker 或 kubectl 命令行工具的時候,往往會被很多子命令以及參數困擾。事先設定好 Completion 命令補齊完成功能,可以讓平日工作輕鬆些。
在之前幾篇文章有約略提到 Bash Completion ,但沒有詳細介紹,這篇文章專門說明在 Linux Bash Shell 環境下的設定方式。
下載內容
https://raw.githubusercontent.com/docker/cli/master/contrib/completion/bash/docker
並儲存在 /etc/bash_completion.d/docker
可用 curl 命令如下:
下次登入即可使用。
或是儲存在家目錄下 $HOME/bash_completion.d/docker ,
然後在家目錄下的 .bashrc 文件加入下面指令後,下次登入即可使用
專門針對 docker-compose 的命令補齊完成功能,是另外一段 bash 腳本,
可用 curl 命令下載:
儲存在 /etc/bash_completion.d/docker-compose
或是儲存在家目錄下 $HOME/bash_completion.d/docker-compose ,
然後在家目錄下的 .bashrc 文件加入下面指令後,下次登入即可使用
專門針對 docker-machine 的命令補齊完成功能,是另外一段 bash 腳本,
可用 curl 命令下載:
儲存在 /etc/bash_completion.d/docker-machine
或是儲存在家目錄下 $HOME/bash_completion.d/docker-machine ,
然後在家目錄下的 .bashrc 文件加入下面指令後,下次登入即可使用
需要注意的是,由於 docker CLI / API 隨着版本更新,必須視所使用的版本更新上述腳本。
另外,少數需要開啓 experiment 特性才能啓動的參數以及子命令在 completion 可能無法辨別。
如果有安裝好 bash completion,命令行中輸入
( 打字停在 im,還沒輸入完就直接打 TAB 鍵)
命令行會提示你
Docker bash completion 除了解析自身子命令以及參數之外,
也能辨識當前主機下的 volume 名稱,image 名稱,(含 tag ),等等,
當你長時間在自己的主機內建置保存了很多 images 且每一個 image 有着不同的 tag , 這個功能將會變得非常實用!
如果有安裝 Kubernetes kubectl 的 bash completion,如果輸入如下
最後補充一點,Kubernetes kubectl 的 bash completion 跟 Docker EE UCP client bundle 兩者也可以配合的很好!
趕快來試試吧!
在之前幾篇文章有約略提到 Bash Completion ,但沒有詳細介紹,這篇文章專門說明在 Linux Bash Shell 環境下的設定方式。
一、關於 Docker 部分,可以進一步細分爲 docker 命令本身,docker-compose, docker-machine 三項,
(1)docker 命令本身
下載內容
https://raw.githubusercontent.com/docker/cli/master/contrib/completion/bash/docker
並儲存在 /etc/bash_completion.d/docker
可用 curl 命令如下:
$ sudo curl -L https://raw.githubusercontent.com/docker/cli/master/contrib/completion/bash/docker -o /etc/bash_completion.d/docker-completion
下次登入即可使用。
或是儲存在家目錄下 $HOME/bash_completion.d/docker ,
然後在家目錄下的 .bashrc 文件加入下面指令後,下次登入即可使用
# $HOME/.bashrc
# Docker client bash shell completion
. $HOME/bash_completion.d/docker
(2)docker-compose
專門針對 docker-compose 的命令補齊完成功能,是另外一段 bash 腳本,
可用 curl 命令下載:
$ sudo curl -L https://raw.githubusercontent.com/docker/compose/1.18.0/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
儲存在 /etc/bash_completion.d/docker-compose
或是儲存在家目錄下 $HOME/bash_completion.d/docker-compose ,
然後在家目錄下的 .bashrc 文件加入下面指令後,下次登入即可使用
# $HOME/.bashrc
# Docker compose bash shell completion
. $HOME/bash_completion.d/docker-compose
(3)docker-machine
專門針對 docker-machine 的命令補齊完成功能,是另外一段 bash 腳本,
可用 curl 命令下載:
$ sudo curl -L https://raw.githubusercontent.com/docker/machine/v0.13.0/contrib/completion/bash/docker-machine.bash -o /etc/bash_completion.d/docker-machine
儲存在 /etc/bash_completion.d/docker-machine
或是儲存在家目錄下 $HOME/bash_completion.d/docker-machine ,
然後在家目錄下的 .bashrc 文件加入下面指令後,下次登入即可使用
# $HOME/.bashrc
# Docker machine bash shell completion
. $HOME/bash_completion.d/docker-machine
需要注意的是,由於 docker CLI / API 隨着版本更新,必須視所使用的版本更新上述腳本。
另外,少數需要開啓 experiment 特性才能啓動的參數以及子命令在 completion 可能無法辨別。
二、關於 Kubectl 部分,
在家目錄下的 .bashrc 文件加入下面指令後下次登入即可使用,# $HOME/.bashrc
# Kubernetes client (kubectl) bash shell completion
source <(kubectl completion bash)
結論:
磨刀不誤砍柴工。如果有安裝好 bash completion,命令行中輸入
docker im<tab>
( 打字停在 im,還沒輸入完就直接打 TAB 鍵)
命令行會提示你
image images import三個選項讓你參考,
Docker bash completion 除了解析自身子命令以及參數之外,
也能辨識當前主機下的 volume 名稱,image 名稱,(含 tag ),等等,
當你長時間在自己的主機內建置保存了很多 images 且每一個 image 有着不同的 tag , 這個功能將會變得非常實用!
如果有安裝 Kubernetes kubectl 的 bash completion,如果輸入如下
kubectl -n kube-system get po<tab>( 打字停在 po,還沒輸入完就直接打 TAB 鍵,它會自動補齊完整的名字 pods )
最後補充一點,Kubernetes kubectl 的 bash completion 跟 Docker EE UCP client bundle 兩者也可以配合的很好!
趕快來試試吧!
留言
張貼留言