Docker for Mac 使っている場合の入力補完
tl:dr
Docker.app 内に bash_completion がバンドルされているので、それ使ってね。
背景
たいてい、以下のようなコマンドで completion 設定すると思うが、
curl -L https://raw.githubusercontent.com/docker/docker/master/contrib/completion/bash/docker > /etc/bash_completion.d/docker curl -L https://raw.githubusercontent.com/docker/compose/$(docker-compose version --short)/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose files=(docker-machine docker-machine-wrapper docker-machine-prompt) for f in "${files[@]}"; do curl -L https://raw.githubusercontent.com/docker/machine/v$(docker-machine --version | tr -ds ',' ' ' | awk 'NR==1{print $(3)}')/contrib/completion/bash/$f.bash > `brew --prefix`/etc/bash_completion.d/$f done
- 参考: docker bash completion docker/docker - Github
- 参考: Docker Machine Command-line completion - Docker
- 参考: Docker Compose Command-line completion - Docker
Docker for Mac の場合どうなんだろと気になって軽く調べた。
方法
またしてもググラビリティが低かったらしく、なかなかピンポイントな情報に出会えなかった。 結論、Docker for Mac の公式ドキュメントに書いてあるとおり、Docker.app 内にバンドルされているので、それを使おう。
Installing bash completion: Get started with Docker for Mac - Docker
If you are using bash completion, such as homebrew bash-completion on Mac bash completion scripts for the following commands may be found inside Docker.app, in the Contents/Resources/etc/ directory:
- docker
- docker-machine
- docker-compose
homebrew で bash_completion 入れていれば、こんな感じで bash_completion.d/ ディレクトリに symlink 貼ってあげれば良い。
ln -s /Applications/Docker.app/Contents/Resources/etc/docker.bash-completion /usr/local/etc/bash_completion.d/docker ln -s /Applications/Docker.app/Contents/Resources/etc/docker-machine.bash-completion /usr/local/etc/bash_completion.d/docker-machine ln -s /Applications/Docker.app/Contents/Resources/etc/docker-compose.bash-completion /usr/local/etc/bash_completion.d/docker-compose
実行例
コマンド補完の例
$ docker [TAB] attach create export import login pause push run stack system version build deploy help info logout plugin rename save start tag volume commit diff history inspect logs port restart search stats top wait container events image kill network ps rm secret stop unpause cp exec images load node pull rmi service swarm update
パラメーター補完の例
# 以下のコンテナがある状態で $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES dbd529912c30 uorat/ecs-demo-php-simple-app "/usr/sbin/apache2..." About a minute ago Up About a minute 0.0.0.0:80->80/tcp hopeful_kalam # "docker stop" まで打って TAB 押すと $ docker stop [TAB] ↓ $ docker stop hopeful_kalam # もう一つコンテナ立ち上げる $ docker run -d -p81:80 [TAB] alpine uorat/ecs-demo-php-simple-app ubuntu alpine:latest uorat/ecs-demo-php-simple-app:latest ubuntu:12.04 $ docker run -d -p81:80 uorat/ecs-demo-php-simple-app 01a8b01975c07667574042bced6ba14d9056f87b43053b46e1abd6a29800fa6f # 確認 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 01a8b01975c0 uorat/ecs-demo-php-simple-app "/usr/sbin/apache2..." 2 minutes ago Up 2 minutes 0.0.0.0:81->80/tcp elastic_chandrasekhar dbd529912c30 uorat/ecs-demo-php-simple-app "/usr/sbin/apache2..." 5 minutes ago Up 5 minutes 0.0.0.0:80->80/tcp hopeful_kalam # "docker stop" まで打って TAB 押すと $ docker stop [TAB] elastic_chandrasekhar hopeful_kalam # 止める $ docker stop [TAB] elastic_chandrasekhar hopeful_kalam $ docker stop hopeful_kalam hopeful_kalam # 止まってるコンテナを再度立ち上げる $ docker start [TAB] ↓ $ docker start hopeful_kalam ← ちゃんと止まってるコンテナだけフィルタリングされる
ちゃんちゃん。
Docker実践入門――Linuxコンテナ技術の基礎から応用まで (Software Design plus)
- 作者: 中井悦司
- 出版社/メーカー: 技術評論社
- 発売日: 2015/09/26
- メディア: 大型本
- この商品を含むブログ (2件) を見る
プログラマのためのDocker教科書 インフラの基礎知識&コードによる環境構築の自動化
- 作者: 阿佐志保,山田祥寛
- 出版社/メーカー: 翔泳社
- 発売日: 2015/11/20
- メディア: 大型本
- この商品を含むブログ (3件) を見る