-
Notifications
You must be signed in to change notification settings - Fork 0
DNET_Podman
- 戻る(Linux、言語等に依存しない汎用開発支援ツール)
- Docker
- Podman(本ページ)
- RHEL8系からDockerが非推奨となった。
- PodmanはDockerとの互換性が大幅に向上しているため、ほとんどのケースでほぼそのまま移行できる。
| Docker | Podman | |
|---|---|---|
| アーキテクチャ | デーモンあり(dockerd) | デーモンレス(subprocess + systemd) |
| rootless | 後付け | デフォルトで強力 |
| CLI(コマンド)互換性 | Docker CLI | Docker CLI互換。alias で置換可 |
| Compose | Docker Compose(v2 は Go で高速) |
podman-compose(互換性はあるが機能差あり) |
| K8s | 動くが、docker shim は廃止済 | CRI-Oと同系統で相性が良い |
| セキュリティ | dockerd が root | rootlessでセキュア |
| イメージビルド | buildx / BuildKit | buildah を内部利用 |
| 学習コスト | 低い | やや高い |
| 利用シーン | 開発環境 | サーバー・本番環境 |
- 共存はできるが、あまりオススメではなさそう。
- WSL2なら、ディストリビューションで分けると良いかも。
| 項目 | Docker | Podman | 同居可否 |
|---|---|---|---|
| デーモン | 必要 | 不要 | 可 |
| rootless | あり | 標準 | 可 |
| CLI競合 | dockerコマンド | docker互換 | alias 禁推奨 |
| ソケット | /var/run/docker.sock |
docker.sock 互換可能 | パス被り注意 |
| ネットワーク | dockerd | CNI / netavark | 可 |
dockerd という常駐デーモンが必要
- 多くの操作は dockerd が root 権限で実行
- セキュリティ上の懸念ポイントになることも
デーモンなし(daemonless)
- プロセスを直接操作
- rootless を前提に設計
Docker も rootless をサポートしているが…後付け機能で一部のネットワーク機能が制限される。
設計段階から rootless 前提、systemd と統合され、rootless でサービス化でき事故を避けたい企業で採用されやすい。
未記載(元 Wiki も見出しのみ)。
- alias docker=podmanでほとんど置き換えられる。
- 既存 Docker スクリプトをほぼそのまま使える
イメージレベルでは100%互換、Docker Hubの公式イメージを利用可能。
- OCIイメージ規格(およびDockerイメージ規格)をサポート
- 保存場所が異なります: /var/lib/docker/...
- OCIイメージ規格(およびDockerイメージ規格)をサポート
- 保存場所が異なります: ~/.local/share/containers/storage/...
-
Docker Compose v2 が強力
-
Compose ファイルの機能は最も豊富
-
以下の観点で本番に向かないとされる(禁止や非推奨ではない)
- クラスタリング(複数ノード)に非対応
- セルフヒーリング(自動再起動・自己修復)が限定的
- ローリングアップデート / Blue-Green デプロイに非対応
- 管理機能(Observability / Secrets / Policy)が弱い
- podman-compose を使用(別プロジェクト)
- シンプルな compose は動くが、advanced な Compose 機能が未対応のことも多い
- クラスタリング(複数ノード)に非対応も、daemonless、rootlessでより本番向き。
Docker も rootless
- Kubernetes では containerd / CRI-O が主流
- 以下のような解説があるが、イメージは同じなのであまりキにしなくて良いかもしれない。
- dockerd が CRI を満たしてないためdockershimが必要だった。
- containerd は dockerd から切り出された必要部分。
- しかし、dockershimという余分なラッパは削除された。
- Podman の開発元(Red Hat)は CRI-O も開発
- Podman と CRI-O は技術的に近いためK8sと親和性が高い
- BuildKit が非常に速い
- マルチプラットフォームビルドが得意
- buildah を内部使用
- buildah は柔軟だが高速さは劣る
本番では containerd / CRI-O が主流
開発環境中心に移行しつつある
本番運用に向く
- デーモン不要
- rootless が自然
- systemd と統合しやすい
開発者(特に Windows / macOS)
- Compose 中心の運用
- BuildKit で高速ビルド
- GUI(Docker Desktop)を使いたい
本番(Linux)
- デーモンなしで使いたい
- rootless で運用したい
- systemd と連携したい
- Docker 互換 CLI を使いたい
- GUI(Podman Desktop)もある。
-
DockerからPodmanに! #Docker - Qiita
https://qiita.com/high_high/items/5ec80f26a448469a9f9f -
Podmanの基本的な使い方ガイド 2025年版 #container - Qiita
https://qiita.com/ootakazuhiko/items/cf1326648aab70f0fa32 -
docker-composeからの脱却。podman-composeからのPod化までの道 #Podman - Qiita
https://qiita.com/toomori/items/d461e607897aa8229166
正誤
- 元 Wiki には「Rootless の質が違う」節(およびその下の「Docker Rootless」)が 2 箇所にあり、同一のアンカ ID(
#k5b5d52a/#u0277a17)が 重複して振られていた。2 つ目は内容が途中で切れた重複と思われるが、 本文はそのまま残し、見出しに「(再掲)」を補って一意にした。
移行メモ
- 同名の見出し(「Docker」「Podman」「Docker Rootless」)が多数あり GitHub Wiki でアンカが衝突するため、括弧で文脈を補って一意にした。
- 元 Wiki の表は GitHub の表に変換した。比較表の 1 列目は 見出しが空欄のため、そのまま空欄とした。
- 本文の無い見出し(「Docker CLI」の Docker 側)は、その旨を明示した。
Tags: 移行, Podman, Docker, コンテナ, rootless, daemonless, buildah, CRI-O, podman-compose, RHEL
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。