【CentOS Stream 8】Podmanを使ってみた

Linux環境におけるコンテナ管理ツールとしては「Docker」が有名だと思います。
しかし、RHEL8やCentOS 8からはDockerに代わって「Podman」の使用が推奨されるようになりました。

現状でもDockerを使うことは可能ですが、非推奨のものを使い続けることにはそれなりのリスクがあるので「Podman」を試してみました。
(今回試した環境は「CentOS Stream 8」です)

Podmanとは

Red Hat社が開発したコンテナ管理ツールです。
Dockerと似たようなCLI(コマンドラインインターフェース)を提供していて、大雑把に言えばdockerコマンドをpodmanコマンドに置換するだけで使えます。

例:
docker image ls → podman image ls

インストール

dnfコマンドでインストールすることが出来ます。

sudo dnf install podman

その他に「podman-plugins」と「podman-compose」もインストールしておくと便利だと思います。

動作確認

以上でインストールは完了です。
試しにコンテナを作ってそれを実行してみます。
busyboxというコンパクトなLinux環境を動かしてみます。

下記のコマンドでイメージのダウンロードとコンテナの生成及び実行が行われます。

podman run -it --rm busybox

うまくいけば「/ #」が表示されます。
そこはもうbusyboxの中です。
標準的なLinuxコマンドは網羅されているのでちょっとした作業なら行うことが出来ます。

尚、元の環境に戻る場合は「exit」を入力してください。
(実行時に「–rm」オプションを付けているので自動的にコンテナは削除されます)

Dockerとの相違点

内部の動作を見るとPodmanとDockerでは違いがあります。
一番の違いはPodmanにはdockerデーモンに相当するデーモンが存在しないことだと思います。
デーモンが単一障害点になって配下のコンテナが全て停止するという事態を避けられると謳っています。

また、ルート権限がなくてもコンテナを動かせることも相違点の一つだと思います。
(ルートレスモード)
Dockerにもルートレスモードがあるようですが私は使ったことがありません。
使うに当たってどれくらいの手間がかかるのかは分かりませんが、Podmanであれば特に設定をすることなくルートレスモードで動かすことが可能です。

docker-composeはうまく動かない

複数のコンテナとの連携が必要になる場合、docker-composeを使って管理することが多いと思います。
今回試しにWordPressをdocker-copmposeを使って動かしてみたのですが、うまく動きませんでした。
(WordPressはwebサーバーのコンテナとMySQLのコンテナが必要になります)

ソケット周りやdocker-compose.ymlの設定を見直せばうまく動くようになるのかもしれませんが、私は解決に至りませんでした。
podman-composeを使うことでWordPressを動かすことが出来ましたが、内部的に実行されるコマンドに違いがあるようでdocker-composeを完全に置き換えるまでにはなっていないようです。

WordPressインストーラ
サンプルページ

まとめ

思っていたよりも簡単にCentOS Stream 8の環境でPodmanを動かすことが出来ました。
実際に使ってみると分かるのですが、コンテナはかなり便利なのでいろいろ活用していこうと思います。