Skip to content

DNET_Podman

nishi_74322014 edited this page Sep 11, 2026 · 1 revision

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

詳細

アーキテクチャ

Docker(アーキテクチャ)

dockerd という常駐デーモンが必要

  • 多くの操作は dockerd が root 権限で実行
  • セキュリティ上の懸念ポイントになることも

Podman(アーキテクチャ)

デーモンなし(daemonless)

  • プロセスを直接操作
  • rootless を前提に設計

Rootless の質が違う

Docker Rootless

Docker も rootless をサポートしているが…後付け機能で一部のネットワーク機能が制限される。

Podman Rootless

設計段階から rootless 前提、systemd と統合され、rootless でサービス化でき事故を避けたい企業で採用されやすい。

Docker CLI

Docker(Docker CLI)

未記載(元 Wiki も見出しのみ)。

Podman(Docker CLI)

  • alias docker=podmanでほとんど置き換えられる。
  • 既存 Docker スクリプトをほぼそのまま使える

Dockerfile

イメージレベルでは100%互換、Docker Hubの公式イメージを利用可能。

Docker(Dockerfile)

  • OCIイメージ規格(およびDockerイメージ規格)をサポート
  • 保存場所が異なります: /var/lib/docker/...

Podman(Dockerfile)

  • OCIイメージ規格(およびDockerイメージ規格)をサポート
  • 保存場所が異なります: ~/.local/share/containers/storage/...

Compose

Docker(Compose)

  • Docker Compose v2 が強力

  • Compose ファイルの機能は最も豊富

  • 以下の観点で本番に向かないとされる(禁止や非推奨ではない)

    • クラスタリング(複数ノード)に非対応
    • セルフヒーリング(自動再起動・自己修復)が限定的
    • ローリングアップデート / Blue-Green デプロイに非対応
    • 管理機能(Observability / Secrets / Policy)が弱い

Podman(Compose)

  • podman-compose を使用(別プロジェクト)
  • シンプルな compose は動くが、advanced な Compose 機能が未対応のことも多い
  • クラスタリング(複数ノード)に非対応も、daemonless、rootlessでより本番向き。

Rootless の質が違う(再掲)

Docker Rootless(再掲)

Docker も rootless

K8s

  • Kubernetes では containerd / CRI-O が主流
  • 以下のような解説があるが、イメージは同じなのであまりキにしなくて良いかもしれない。

Docker(K8s)

  • dockerd が CRI を満たしてないためdockershimが必要だった。
  • containerd は dockerd から切り出された必要部分。
  • しかし、dockershimという余分なラッパは削除された。

Podman(K8s)

  • Podman の開発元(Red Hat)は CRI-O も開発
  • Podman と CRI-O は技術的に近いためK8sと親和性が高い

イメージビルド

Docker(イメージビルド)

  • BuildKit が非常に速い
  • マルチプラットフォームビルドが得意

Podman(イメージビルド)

  • buildah を内部使用
  • buildah は柔軟だが高速さは劣る

本番運用

本番では containerd / CRI-O が主流

Docker(本番運用)

開発環境中心に移行しつつある

Podman(本番運用)

本番運用に向く

  • デーモン不要
  • rootless が自然
  • systemd と統合しやすい

選定基準

Docker(選定基準)

開発者(特に Windows / macOS)

  • Compose 中心の運用
  • BuildKit で高速ビルド
  • GUI(Docker Desktop)を使いたい

Podman(選定基準)

本番(Linux)

  • デーモンなしで使いたい
  • rootless で運用したい
  • systemd と連携したい
  • Docker 互換 CLI を使いたい
  • GUI(Podman Desktop)もある。

参考

正誤

  • 元 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

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally