【M1】Dockerコマンド補完でハマったのでメモ
はじめに
Apple Silicon (M1)のMacBook ProでDocker Desktopを導入後Dockerコマンドを補完するやり方をこれまでのMacBook Proと同じようにはできなかったので、ドキュメントに書いてある方法などでうまくいかなかった方法や、最終的にできた方法を記します。
ちなみにzshは/bin/zsh
のものを使っています。
Dockerコマンドの補完機能の設定について
公式にはDocker composeの設定の仕方が書いてある
docs.docker.com
oh-my-zsh
は使っていないので、
Without oh-my-zsh shellでのやり方を見ると、
mkdir -p ~/.zsh/completion curl \ -L https://raw.githubusercontent.com/docker/compose/1.29.2/contrib/completion/zsh/_docker-compose \ -o ~/.zsh/completion/_docker-compose
となっているが、このあとの処理を書き加えてもうまく行かない。(結果的にこのcurl
してくるファイルがM1には良くないっぽい)
なんか違う方法はないかと色々調べるとここらへんに行き着く docs.docker.jp
これのM1バージョンで、brewのzshのpathに変更してもだめ(M1の場合のPATHは/opt/homebrew/share/zsh/site-functions/
)
etc=/Applications/Docker.app/Contents/Resources/etc ln -s $etc/docker.zsh-completion /opt/homebrew/share/zsh/site-functions/_docker ln -s $etc/docker-compose.zsh-completion /opt/homebrew/share/zsh/site-functions/_docker-compose
とまぁ、色々試した結果、なんだかよくわからんが上記合わせ技で解決。
つまり、1つ目の補完に必要なファイルをcurl
で引っ張るのではなく、Docker Desktop for Macに付随している補完スクリプトのシンボリックリンクを貼るようにする。
後半はzshの補完機能を有効にするために.zshrc
に記述する。
シェルを一度切って、もう一度立ち上げ、docker[半角スペース]
としてtabを押せば以下のようになる
% docker attach -- Attach local standard input, output, and error streams to a running container build -- Build an image from a Dockerfile builder -- Manage builds buildx* -- Docker Buildx (Docker Inc., v0.7.1) commit -- Create a new image from a container's changes compose* -- Docker Compose (Docker Inc., v2.2.1) config -- Manage Docker configs container -- Manage containers ...
docker-compose[半角スペース]
としてtabを押せば以下のようになる
% docker-compose build -- Build or rebuild services convert -- Converts the compose file to platform's canonical format cp -- Copy files/folders between a service container and the local filesystem create -- Creates containers for a service. down -- Stop and remove containers, networks events -- Receive real time events from containers. exec -- Execute a command in a running container. images -- List images used by the created containers kill -- Force stop service containers. logs -- View output from containers ls -- List running compose projects ...
補完できている。これで快適Docker生活
おわりに
まだM1でDockerコマンドの補完について書かれているものは見つからなかったので、同じくハマっている人がいたら参考になればと思います。