
Macで使える超便利なDockerコマンド(自作する必要があるから知らなかった)
コマンドはこの 3 つです。
-
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ファイルがあるプロジェクトディレクトリまで移動するのが面倒に感じることもありました。
どれも些細な問題に見えるかもしれません。ただ、この 3 つのコマンドは何年も使ううちに、思っていたよりずっと役に立ってくれました。他の人にも使えるかもしれないので、ここに置いておきます。
この記事は元々 dev.to に掲載されています。