「[[.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

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS