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を完全に置き換えるまでにはなっていないようです。
まとめ
思っていたよりも簡単にCentOS Stream 8の環境でPodmanを動かすことが出来ました。
実際に使ってみると分かるのですが、コンテナはかなり便利なのでいろいろ活用していこうと思います。
コメント
コメント一覧 (2件)
Podman v3以降でルートモード、ルートレスモードどちらでもDocker Composeの実行ができるようになりました。当時書いた記事でも問題なくWordPressであれば実行できています。
下記記事内でも書いていますが、環境によってはSELinuxポリシーに引っかかることもあります。
参考にしてください。
https://rheb.hatenablog.com/entry/podman3_docker_compose
https://rheb.hatenablog.com/entry/podman3-rootless-docker-compose
Shion Tanaka様
コメントありがとうございます。
大変有用な情報、ありがとうございます。
記事も拝見させていただきます。
docker composeが使えるようになれば個人的にはかなり嬉しいので今度改めて試してみます。
情報ありがとうございました!