CentOS 8で、Dockerの代替らしい Podman を少し使ってみる

RHEL
Nishipy
RHEL 8では、コンテナランタイムとして、Docker ではなく Podman がサポートされるらしいので、使ってみました。

はじめに

Podmanを触ってみます。

RHEL 8では、Dockerがサポート対象外に

RHEL(Red Hat Enterprise Linux)のドキュメントをみると、RHEL 8(正確にはRHEL 7.6以降)にはDockerが含まれず、サポートの対象からも外れたらしい。

コンテナーの構築、実行、および管理 Red Hat Enterprise Linux 8 | Red Hat Customer Portal
本ガイドでは、podman、buildah、skopeo、runc などのコマンドラインツールを使用して、RHEL 8 システムで Linux コンテナーを使用する方法を説明します。

Dockerの削除については、こんなことが書かれています。要するに本番でRHEL上でコンテナを動かすときは、OpenShift前提のはずで、Dockerのように豊富な機能なくてもいいから、軽量なものに変えました、と言うことかな。あとはセキュリティ面もDockerより改善されているらしい。

Docker の削除は、コンテナーがどのように扱われるかに関する Red Hat の考え方の変更を反映しています。
* 企業は、コマンドラインからコンテナーを個別に実行することを重視していません。コンテナーは、主に OpenShift などの、Kubernetes ベースのプラットフォームで使用されます。
* OpenShift を、コンテナーを実行するプロジェクトとして再配置することで、Docker などのコンテナーエンジンが、エンドユーザーによる直接アクセスがない、OpenShift の別のコンポーネントになります。
* OpenShift のコンテナーエンジンは直接使用することを目的としていないため、スタンドアロン機能の多くを実装しなくても、OpenShift が必要とする機能をすべて実行することに焦点をあてる、限定された機能セットで実装できます。

Podman

そのDockerの代わりに入っているのは、OCI(Open Container Initiative)にも準拠したデーモンレスコンテナランタイムであるPodmanというやつらしい。OCIについては、以前の記事で取り上げました。

Podmandockerコマンドと互換性があるらしい。docker-composeに対応した、podman-composeも用意されているようです。一方で、dockerコマンドの以下のオプションは対応していないそうです。前節で書いたように、OpenShift、k8sを前提としているため、不要なものを削ったのだと想像しています。

第8章 コンテナーのコマンドライン参照 Red Hat Enterprise Linux 8 | Red Hat Customer Portal
The Red Hat Customer Portal delivers the knowledge, expertise, and guidance available through your Red Hat subscription.

podman が対応していない dockerコマンドのオプションには、network、node、plugin (podman はプラグインをサポートしません)、rename (rm および create を使用して podman でコンテナーの名前を変更します)、secret、service、stack、swarm (podman は Docker Swarm をサポートしません) が含まれます。container および imageオプションは、podman で直接使用されるサブコマンドを実行するのに使用します。

Podmanのその他の特徴は、以下の記事がとてもわかりやすかったです。特に重要そうなのは、「(4) デーモンレスのコンテナエンジン」や「(5)コンテナはルートレスモードで実行可能」でしょうか。Dockerにもルートレスモードってあった気もしますが、あれはDockerデーモンの話ですっけ?

Dockerの置き換えを目指す ルートレス&デーモンレスの Podman 入門 - Qiita
OpenShiftのマニュアルには、dockerコマンドと共に podmanコマンド が利用できるとされている。OpenShift を触る様になるまで、Podmanの存在を知らなかったので、調べたことをメモとして残しておく。 Po...

(1) Docker互換のコマンドラインフロントエンドを提供
(2) オープンソースプロジェクトであり、GitHub でコードが公開されている
(3) OCIに準拠するコンテナイメージの開発、管理、および、コンテナとして実行
(4) デーモンレスのコンテナエンジン
(5) コンテナはルートレスモードで実行可能
(6) ほとんどのLinuxプラットフォームで利用できる
(7) Kubernetes の Pod を扱える

Dockerとの比較は、この記事がわかりやすいです。図のようにデーモンの有無が、DockerとPodmanの大きな違いのようですね。

Podman and Buildah for Docker users - Red Hat Developer
What docker users need to know to move from Docker to Podman and Buildah and the advantages of doing so. Developers/operators can easily move to Podman, do all ...(続く)
  • Dockerのアーキテクチャ

  • Podmanのアーキテクチャ

アザラシ?モグラ?

ダグトリオのせいでモグラにしか見えなかったですか、Kubernetesの航海というコンセプトからいくとアザラシかな?水面みたいなのもあるし。

少し使ってみる

これまで紹介してきた記事の中に、たくさん実行例が書いてありますが、軽く触ってみます。



RHEL8/CentOS8のVM用意

Macでも試せそうだけどせっかくなので、VMを用意してやりました。最近Dockerばかり使っていたので、Vagrantをひさびさに使います。

Podmanのインストール

これ以降はすべてCentOS8のVM上で作業します。

イメージ取得から、実行まで試す

よくありがちな操作を、よくありがちなNginxで試す。

さいごに

Dockerしか使ったことがなかった私が、Podmanを触ってみましたが、コマンドの互換性のおかげで特に苦労せずに済みました。これならDockerからの移行も容易かも?

ただ、コンテナ仮想化がここまで普及したのはDockerの功績だと思うし、クジラのロゴも可愛くて好きなので、なんとか頑張って欲しいと言う気持ちもあります。

この記事を書いた後に、以下の翻訳記事を書きました。元記事がたいへん素晴らしいので、ぜひご覧ください。

以上.

コメント