「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -戻る([[Linux]]、[[言語等に依存しない汎用開発支援ツール]]) --[[Docker]] --Podman *目次 [#b36b7a42] #contents *概要 [#q007a993] -RHEL8系からDockerが非推奨となった。エイリアスなどもあり共存はできない。 -RHEL8系からDockerが非推奨となった。 -PodmanはDockerとの互換性が大幅に向上しているため、ほとんどのケースでほぼそのまま移行できる。 **比較表 [#p1ec7eb3] ||Docker|Podman|h |アーキテクチャ| デーモンあり(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 を内部利用| |学習コスト|低い|やや高い| |利用シーン| 開発環境|サーバー・本番環境| **共存可否 [#l6f28641] -共存はできるが、あまりオススメではなさそう。 -WSL2なら、ディストリビューションで分けると良いかも。 |項目|Docker|Podman|同居可否|h |デーモン|必要|不要|可| |rootless|あり|標準|可| |CLI競合|dockerコマンド|docker互換|alias 禁推奨| |ソケット|`/var/run/docker.sock`|docker.sock 互換可能|パス被り注意| |ネットワーク|dockerd |CNI / netavark|可| *詳細 [#x756780a] **アーキテクチャ [#e7d8bca7] ***Docker [#ld02e714] dockerd という常駐デーモンが必要 -多くの操作は dockerd が root 権限で実行 -セキュリティ上の懸念ポイントになることも ***Podman [#ebfa4ef9] デーモンなし(daemonless) -プロセスを直接操作 -rootless を前提に設計 **Rootless の質が違う [#k5b5d52a] ***Docker Rootless [#u0277a17] Docker も rootless をサポートしているが…後付け機能で一部のネットワーク機能が制限される。 ***Podman Rootless [#v97076bd] 設計段階から rootless 前提、systemd と統合され、rootless でサービス化でき事故を避けたい企業で採用されやすい。 **Docker CLI [#hbc7f9d3] ***Docker [#pbfcc68f] ***Podman [#m90df2a9] -alias docker=podmanでほとんど置き換えられる。 -既存 Docker スクリプトをほぼそのまま使える **Dockerfile [#p6e1ed22] イメージレベルでは100%互換、Docker Hubの公式イメージを利用可能。 ***Docker [#s1a72831] -OCIイメージ規格(およびDockerイメージ規格)をサポート -保存場所が異なります: /var/lib/docker/... ***Podman [#h7719461] -OCIイメージ規格(およびDockerイメージ規格)をサポート -保存場所が異なります: ~/.local/share/containers/storage/... **Compose [#f54703d5] ***Docker [#ef384ee9] -Docker Compose v2 が強力 -Compose ファイルの機能は最も豊富 -以下の観点で本番に向かないとされる(禁止や非推奨ではない) --クラスタリング(複数ノード)に非対応 --セルフヒーリング(自動再起動・自己修復)が限定的 --ローリングアップデート / Blue-Green デプロイに非対応 --管理機能(Observability / Secrets / Policy)が弱い ***Podman [#o6a526d9] -podman-compose を使用(別プロジェクト) -シンプルな compose は動くが、advanced な Compose 機能が未対応のことも多い -クラスタリング(複数ノード)に非対応も、daemonless、rootlessでより本番向き。 **Rootless の質が違う [#k5b5d52a] ***Docker Rootless [#u0277a17] Docker も rootless **K8s [#q2ed675c] -Kubernetes では containerd / CRI-O が主流 -以下のような解説があるが、イメージは同じなのであまりキにしなくて良いかもしれない。 ***Docker [#re04bcab] -dockerd が CRI を満たしてないためdockershimが必要だった。 -containerd は dockerd から切り出された必要部分。 -しかし、dockershimという余分なラッパは削除された。 ***Podman [#o6f538ca] -Podman の開発元(Red Hat)は CRI-O も開発 -Podman と CRI-O は技術的に近いためK8sと親和性が高い **イメージビルド [#o1053295] ***Docker [#he2f7ee2] -BuildKit が非常に速い -マルチプラットフォームビルドが得意 ***Podman [#i2d0d895] -buildah を内部使用 -buildah は柔軟だが高速さは劣る **本番運用 [#vd6d770f] 本番では containerd / CRI-O が主流 ***Docker [#y3cfad5c] 開発環境中心に移行しつつある ***Podman [#q03ba502] 本番運用に向く -デーモン不要 -rootless が自然 -systemd と統合しやすい **選定基準 [#c55e9078] ***Docker [#g1e839bd] 開発者(特に Windows / macOS) -Compose 中心の運用 -BuildKit で高速ビルド -GUI(Docker Desktop)を使いたい ***Podman [#cf3a6577] 本番(Linux) -デーモンなしで使いたい -rootless で運用したい -systemd と連携したい -Docker 互換 CLI を使いたい -GUI(Podman Desktop)もある。 *参考 [#v9dc7d50] -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