【脱Docker】Podmanを使ってみた!コンテナ時代の新たな選択肢を実例で解説
コンテナ技術といえば真っ先に思い浮かぶのがDockerですが、最近話題のPodmanというツールをご存知でしょうか?
今回は、Dockerと同じように使えるけど実はそれ以上に「良いところがある」Podmanについて、実際の使用例を交えて紹介します!
✅ Podmanとは?
PodmanはRed Hat主導で開発されているOCI(Open Container Initiative)準拠のコンテナエンジンです。最大の特徴は以下の点です:
- デーモンレス(Daemonless):root権限不要で動作可能
-
Docker互換CLI:
alias docker=podman
でそのまま使える - セキュリティ重視:Rootlessコンテナが標準対応
- シンプルなアーキテクチャ:systemdとの親和性が高い
🆚 DockerとPodmanの比較
特徴 | Docker | Podman |
---|---|---|
デーモン | 常駐デーモンが必要 | デーモンレス(CLIが直接操作) |
Rootless対応 | 一部対応 | フル対応(完全な非root運用) |
CLI互換性 | - | ほぼ完全互換(Docker CLIそのまま) |
systemd統合 | 手動対応 | 標準対応(podman generate systemd ) |
Windows/Mac対応 | Docker Desktopが必要 | WSL経由で可能 |
🔧 実例:PodmanでNginxを立ち上げる
以下、Dockerと同様のコマンドでNginxコンテナを立ち上げてみます。
① Podmanインストール(Ubuntuの場合)
sudo apt update
sudo apt install podman
② Nginxを実行してみる
podman run -d -p 8080:80 nginx
ブラウザで http://localhost:8080
にアクセスすると、NginxのWelcomeページが表示されます。
③ Rootless動作確認
whoami # 通常ユーザー
podman ps
rootユーザーではなくても、Podmanは普通に動作しています。これはDockerではできなかった点です。
⚙️ systemdサービス化の例(コンテナ自動起動)
Podmanの面白い機能の一つが「systemdユニットの自動生成」です。
podman generate systemd --name nginx -f
このコマンドで作成された .service
ファイルを systemd に登録するだけで、コンテナが自動起動するようになります。
💬 使ってみた感想
良かった点:
- Dockerとほぼ同じコマンド体系で学習コストが低い
- セキュリティ的に安心(非rootで運用できる)
- デーモン不要なので軽量&トラブルが少ない
- systemdとの親和性が非常に高い
惜しい点:
- GUIツールやエコシステムがDockerに比べるとまだ少なめ
- WindowsやMacでの体験はWSLや仮想環境に依存する(Docker Desktopほど簡単ではない)
📌 まとめ
Podmanは「Dockerの完全な代替」ではなく、「よりセキュアで柔軟な代替手段」です。
開発・テスト・本番環境において、デーモンレス、非root運用、systemd統合という魅力を活かして、より軽快でセキュアなコンテナ運用が実現できます。
特に次のような方におすすめです:
- セキュリティ重視の環境構築をしたい人
- Dockerを使いたいがroot権限がない環境
- systemdでサービスとしてコンテナを管理したい人