Macで使える超便利なDockerコマンド(自作する必要があるから知らなかった)
コマンドは以下の通りです:
-
docker open
- ターミナルからDocker Desktopを開く(そしてdockerデーモンを起動する) -
docker close
- ターミナルからDocker Desktopを閉じる(そしてdockerデーモンを停止する) -
docker flush
- 実行中および停止中のすべてのコンテナを停止して削除する
どうやって実現するの?
以下に示すZsh用の簡単な関数を使用します。
docker() {
case "$1" in
"open")
echo "Opening the Docker app..."
open --background -a Docker
;;
"close")
echo "Stopping currently running Docker containers..."
command docker ps -q | xargs -r -L1 command docker stop
if [ $? -eq 0 ]; then
echo "Closing the Docker app..."
test -z "$(command docker ps -q 2>/dev/null)" && osascript -e 'quit app "Docker"'
else
echo "Failed to stop containers."
fi
;;
"flush")
echo "Stopping and removing all containers."
command docker container stop $(command docker ps -a -q) && command docker container rm $(command docker ps -a -q)
if [ $? -eq 0 ]; then
echo "Done."
else
echo "Failed to flush containers."
fi
;;
*)
command docker "$@"
;;
esac
}
先ほど説明したコマンドをターミナルで使用できるようにするには、Zshの設定に組み込む必要があります。これは、スクリプトを~/.zshrc
ファイルに追加することで実現できます。あるいは、~/.zshrc
がソースとする別のファイルに追加することもできます。まず、ホームディレクトリにある~/.zshrc
ファイルを好みのテキストエディタで開きます。そして、このスクリプトをファイルの最後にコピー&ペーストするだけです。
でも、なぜこれが必要なの?
この節を最後に置いたのは、ここまでたどり着いた方は、おそらくこのような機能を求める独自の理由があるだろうと考えたからです。
私の場合は、2019年頃に性能の低いMacbook Airを使用していたことがきっかけでした。Docker Desktopを常にバックグラウンドで実行したくありませんでしたが、ターミナルからDockerデーモンを簡単に起動・停止する方法が欲しかったのです。
さらに、docker compose
で立ち上げたプロジェクトを終了させたい場合でも、必ずしもdocker-compose.yml
ファイルがあるプロジェクトディレクトリに移動したくないこともありました。
これらは些細な問題に見えるかもしれませんが、これらのコマンドは長年にわたって予想以上の有用性を発揮してきました。他の人にも役立つかもしれないと思い、共有することにしました。
この記事は元々 dev.to に掲載されています。