Mac に Podman を入れる (Docker for Mac は消す)
Docker for Mac があまりに不安定[1]なので、ついカッとなって Podman に移行した。
が、Podman 自体もなかなか癖が強かったので覚え書き。
- macOS: 15.6
- podman: 5.6.2
Docker for Mac のアンインストール
Docker for Mac のコンソールにある Troubleshoot に Uninstall ボタンがある。
ただ Troubleshoot 自体が見付けづらかった。
もう消してしまったのでスクショはないので頑張って探して欲しい。
なお、ここからアンインストールしてもファイルが残っている場合もあるのでその場合は手動で消す。
私の環境では ~/.docker と、なぜか /Applications/Docker.app も残っていた。
…せめて後者はちゃんと消せよなぁ…。
あと他にも /usr/local/bin/docker あたりにもなんか残ってた気がする。頑張って滅ぼそう。
Podman Desktop のインストール
brew で入る。公式サイトからダウンロードでもいい https://podman-desktop.io/
brew install --cask podman-desktop
セットアップのウィザードが動くので適当に設定する。アザラシが可愛い[2]
compose を動かす
Podman Desktop のインストール時には compose もあるよ的な表示があるが、それだけでは動かない。
理由は podman compose をすると書いてある。
Description:
This command is a thin wrapper around an external compose provider such as docker-compose or podman-compose. This means that podman compose is executing another tool that implements the compose functionality but sets up the environment in a way to let the compose provider communicate transparently with the local Podman socket. The specified options as well the command and argument are passed directly to the compose provider.The default compose providers are docker-compose and podman-compose. If installed, docker-compose takes precedence since it is the original implementation of the Compose specification and is widely used on the supported platforms (i.e., Linux, Mac OS, Windows).
↓ Nani 訳
説明:
このコマンドは、docker-compose や podman-compose などの外部の Compose プロバイダーを簡潔にラップするものです。
つまり、podman compose は Compose の機能を実装した別のツールを実行しますが、ローカルの Podman ソケットと Compose プロバイダーが透過的に通信できるように環境を構築します。
指定されたオプション、コマンド、および引数は、Compose プロバイダーに直接渡されます。デフォルトの Compose プロバイダーは、docker-compose と podman-compose です。
インストールされている場合、docker-compose が優先されます。
Compose 仕様のオリジナルの実装であり、サポートされているプラットフォーム(Linux、Mac OS、Windows など)で広く使用されているためです。
エラーも出る。
Error: looking up compose provider failed
6 errors occurred:
* exec: "docker-compose": executable file not found in $PATH
* exec: "/Users/54i/.docker/cli-plugins/docker-compose": stat /Users/54i/.docker/cli-plugins/docker-compose: no such file or directory
* exec: "/opt/homebrew/bin/docker-compose": stat /opt/homebrew/bin/docker-compose: no such file or directory
* exec: "/usr/local/bin/docker-compose": stat /usr/local/bin/docker-compose: no such file or directory
* exec: "/Applications/Docker.app/Contents/Resources/cli-plugins/docker-compose": stat /Applications/Docker.app/Contents/Resources/cli-plugins/docker-compose: no such file or directory
* exec: "podman-compose": executable file not found in $PATH
というわけで、別途 docker-compose や podman-compose などが必要になる。
正解の方法: pipx install
https://github.com/containers/podman-compose を単体でインストールするのが正解だった。
Copilot に聞いたら pipx を勧められたので pipx もついでに入れてみた。
pip3 とかでも多分大丈夫だとは思うけど Python に詳しくないのでよくわかってない。
brew install pipx
pipx ensurepath
source ~/.zshrc
pipx install "git+https://github.com/containers/podman-compose.git"
podman-compose --version
# podman-compose version 1.5.0
# podman version 5.6.2
podman compose --version # こっちも OK だった(警告については後述)
# >>>> Executing external compose provider "/Users/54i/.local/bin/podman-compose". Please see podman-compose(1) for how to disable this message. <<<<
#
# podman-compose version 1.5.0
# podman version 5.6.2
失敗した方法(1): brew install podman-compose
brew から podman-compose を入れると失敗する。
brew install podman-compose
brew から入れた場合、podman 本体も依存関係としてインストールされてしまい、Podman Desktop が警告を出してくる。そのままでも動くかもしれないが気持ち悪い。
失敗した方法(2): brew install docker-compose
brew から docker-compose を入れても失敗する。
brew install docker-compose
podman compose を見る限り docker-compose でも良いよっぽい感じに見えるが、当然のように docker-compose は docker を使おうとするので正常には動かない。
設定とかでどうにかなるかもしれないが、そもそも docker を滅ぼしたかったので頑張るのはやめた。
podman compose の警告を消す
>>>> Executing external compose provider "/Users/54i/.local/bin/podman-compose". Please see podman-compose(1) for how to disable this message. <<<<
これを消す。
man podman-compose すれば書いてるんだけど、 PODMAN_COMPOSE_WARNING_LOGS=false を環境変数に設定すれば良い。~.zshrc に入れておけば OK。
export PODMAN_COMPOSE_WARNING_LOGS=false
以上。あーーー、すっきりした[3]
-
Docker.app 内からのアップデートが成功した試しがない、再起動後はいつも config が壊れていると警告が出るなど。あと時々バッテリーが残っているのにスリープ後復帰しないのとかも勝手に Docker for Mac のせいにしている ↩︎
-
正確にはアザラシではないらしい https://rheb.hatenablog.com/entry/podman-in-podman ↩︎
-
個人的に Docker というプロダクトは好きだけど docker は好きじゃない。同様に Terraform は好きだけど terraform は好きじゃない ↩︎
Discussion