【RHEL】コンテナエンジン、Podmanの概要まとめ:Dockerとの違いなどまとめ

Podman

Red Hat Enterprise Linux 9では、デフォルトでDockerが削除され、Podmanコマンドがデフォルトで使えるようになっています。

この記事では、Podmanの概要をまとめて紹介します。

Podmanとは

Podmanはpod managerの略でコンテナを開発、管理、実行するオープンソースのツールです。詳細は以下のRed Hat公式記事で確認できます。

Podman (pod manager の略) は、コンテナを開発、管理、実行するためのオープンソースツールです。Red Hat® エンジニアとオープンソース・コミュニティによって開発されており、libpod ライブラリを使用してコンテナエコシステム全体を管理できます。

Podman とは?をわかりやすく解説
Podman は、Red Hat が開発したオープンソースのコンテナ管理ツール。Docker の代替手段として、Linux システムでのコンテナの開発、管理、実行用に推奨されるツールです。

上記の引用内容からもわかるように、PodmanはRed Hatが主に管理しています。

「Pod」はコンテナのグループのことです。

Pod は、Kubernetes Pod と同様、まとまって稼働し、同じリソースを共有するコンテナのグループです。Podman は、単純なコマンドライン・インタフェース (CLI) と libpod ライブラリ (コンテナ、Pod、コンテナイメージ、ボリュームを管理するアプリケーション・プログラミング・インタフェース (API) を提供) を介してこれらの Pod を管理します。

Podman とは?をわかりやすく解説
Podman は、Red Hat が開発したオープンソースのコンテナ管理ツール。Docker の代替手段として、Linux システムでのコンテナの開発、管理、実行用に推奨されるツールです。

Dockerとは

DockerはPodmanと同じくオープンソースのコンテナエンジンで、コンテナ仮想化技術を提供するツールです。

コンテナ型仮想化技術とは

コンテナ型仮想化技術は、以下の図のようにRed Hat Enterprise LinuxなどのOS上にDockerやPodmanなどのコンテナエンジンをインストールすることでアプリケーションの実行環境を複数作成することができる技術です。

PodmanとDockerの違い

PodmanとDockerにはいくつかの違いがあります。箇条書きでまとめるとPodmanとDockerは主に以下の点で異なります。

  • Podmanはデーモンレス(デーモンなし、つまり、常駐プログラムなし)のアーキテクチャ(構造)になっている
  • Podmanはルートレス(rootless、ルートユーザーを使わないということ)で動作する
  • Podmanは必要なツールを都度追加する形で使える(Dockerはすべて(ほとんど)の機能が搭載された状態で都度追加する構造ではない)
  • Podmanはrootユーザーを使用せずに動作することやSELinuxのラベルを使用して各コンテナを起動することから、Dockerよりもセキュリティ面で優れている

上記の箇条書きを作成するのに参考にした文章をRed Hat 公式サイトから引用します。

Podman とDocker
Docker とは、Linux コンテナの作成と使用を可能にするコンテナ化テクノロジーのことです。Podman と Docker の主な違いは、Podman にはデーモンレス・アーキテクチャが採用されている点です。Podman コンテナは当初からルートレスで動作していますが、Docker でデーモン構成にルートレスモードが追加されたのはつい最近です。Docker は、コンテナの作成と管理を行うオールインワンツールです。それに対し、Podman とその関連ツール (Buildah、Skopeo など) は、コンテナ化の特定の側面に特化しているので、環境をカスタマイズする際には、必要なツールだけを使うことができます。

Podman はデーモンを使用せず、通常のユーザーが root 権限を持つデーモンを操作することなくコンテナを実行したりルートレスコンテナを使用できるようにしたりします。ルートレスにすることで、管理者権限のあるプロセスを必要とせずにコンテナを作成、実行、管理できるため、コンテナ環境にアクセスしやすくなり、セキュリティリスクも軽減されます。さらに、Podman は Security-Enhanced Linux (SELinux) のラベルを使用して各コンテナを起動するため、管理者はコンテナプロセスに提供されるリソースと機能をより詳細に制御できます。

Podman とは?をわかりやすく解説
Podman は、Red Hat が開発したオープンソースのコンテナ管理ツール。Docker の代替手段として、Linux システムでのコンテナの開発、管理、実行用に推奨されるツールです。

DockerからPodmanへの移行に当たるコマンドの利用の変化

DockerからPodmanに移行するにあたってPodmanコマンドはDockerコマンドと同じように使用することができます。

Dockerの代わりにPodmanをインストールします。Dockerデーモンのようなデーモンプロセスを起動したり管理したりする必要はありません。
Docker で使い慣れているコマンドは Podman でも同じように機能します。
Podman はコンテナとイメージを Docker とは異なる場所に保存します。
Podman と Docker イメージは互換性があります。
Podman は、 Kubernetes環境向けの Docker 以上の機能を提供します。

(Google Chromeによる翻訳)

Access Denied

Podman、Skopeo、Buildah ツールの主な利点

DockerからPodmanに移行するにあたって、Podman、Skopeo、Buildahツールが開発されています。

Docker コマンド機能に代わる、Podman、Skopeo、Buildah ツールが開発されました。このシナリオの各ツールはより軽量になり、機能のサブセットに焦点を当てています。

コンテナーの構築、実行、および管理 | Red Hat Enterprise Linux | 9 | Red Hat Documentation
コンテナーの構築、実行、および管理 | Red Hat Enterprise Linux | 9 | Red Hat Documentation

Podman、Skopeo、Buildah ツールの主な利点は以下です。

  • ルートレスモードでの実行 – ルートレスコンテナーは、特権を追加しなくても実行されるため、はるかに安全です。
  • デーモンの必要なし – コンテナーが実行されていない場合、Podman は実行されないので、これらのツールではアイドル時のリソース要件がはるかに少なくなります。Docker は逆に、デーモンが常に実行しています。
  • ネイティブ systemd 統合 – Podman では systemd ユニットファイルを作成し、コンテナーをシステムサービスとして実行できます。
コンテナーの構築、実行、および管理 | Red Hat Enterprise Linux | 9 | Red Hat Documentation
コンテナーの構築、実行、および管理 | Red Hat Enterprise Linux | 9 | Red Hat Documentation

Podmanの保存場所

以下の引用の通り、 /var/lib/containersがデータの保存場所になります。

Podman、Buildah、および CRI-O のコンテナーエンジンはすべて、Docker の保存場所 /var/lib/docker をデフォルトで使用する代わりに、同じバックエンドストアディレクトリー /var/lib/containers を使用します。

コンテナーの構築、実行、および管理 | Red Hat Enterprise Linux | 9 | Red Hat Documentation
コンテナーの構築、実行、および管理 | Red Hat Enterprise Linux | 9 | Red Hat Documentation

参考資料

本記事の作成に使用した参考資料を掲載します。

Access Denied
タイトルとURLをコピーしました