はじめに
Podmanを触ってみます。
RHEL 8では、Dockerがサポート対象外に
RHEL(Red Hat Enterprise Linux)のドキュメントをみると、RHEL 8(正確にはRHEL 7.6以降)にはDockerが含まれず、サポートの対象からも外れたらしい。
Dockerの削除については、こんなことが書かれています。
Docker の削除は、コンテナーがどのように扱われるかに関する Red Hat の考え方の変更を反映しています。
– 企業は、コマンドラインからコンテナーを個別に実行することを重視していません。コンテナーは、主に OpenShift などの、Kubernetes ベースのプラットフォームで使用されます。
– OpenShift を、コンテナーを実行するプロジェクトとして再配置することで、Docker などのコンテナーエンジンが、エンドユーザーによる直接アクセスがない、OpenShift の別のコンポーネントになります。
– OpenShift のコンテナーエンジンは直接使用することを目的としていないため、スタンドアロン機能の多くを実装しなくても、OpenShift が必要とする機能をすべて実行することに焦点をあてる、限定された機能セットで実装できます。
Podman
そのDockerの代わりに入っているのは、OCI(Open Container Initiative)にも準拠したデーモンレスコンテナエンジンであるPodmanというやつらしい。OCIについては、以前の記事で取り上げました。
Podman
はdocker
コマンドと互換性があるらしい。docker-composeに対応した、podman-composeも用意されているようです。一方で、docker
コマンドの以下のオプションは対応していないそうですね。
podman が対応していない dockerコマンドのオプションには、network、node、plugin (podman はプラグインをサポートしません)、rename (rm および create を使用して podman でコンテナーの名前を変更します)、secret、service、stack、swarm (podman は Docker Swarm をサポートしません) が含まれます。container および imageオプションは、podman で直接使用されるサブコマンドを実行するのに使用します。
Podmanのその他の特徴は、以下の記事がとてもわかりやすいです。
Docker
とのアーキテクチャ比較は、この記事にある図がわかりやすいです。図のようにデーモンの有無が、DockerとPodmanの大きな違いのようですね。
- Dockerのアーキテクチャ
-
Podmanのアーキテクチャ
アザラシ?モグラ?
ダグトリオのせいでモグラにしか見えなかったですか、アザラシかな?水面みたいなのもあるし。
もしかしてアザラシ?
— iamnishipy (@iamnishipy) April 7, 2020
少し使ってみる
これまで紹介してきた記事の中に、たくさん実行例が書いてありますが、軽く触ってみます。
RHEL8/CentOS8のVM用意
Macでも試せそうだけどせっかくなので、VMを用意してやりました。最近Dockerばかり使っていたので、Vagrantをひさびさに使います。
1 2 3 |
$ vagrant init centos/8 --box-version 1905.1 $ vagrant up $ vagrant ssh |
Podmanのインストール
これ以降はすべてCentOS8のVM上で作業します。
1 2 3 |
$ sudo yum install podman -y $ podman -v podman version 1.6.4 |
イメージ取得から、実行まで試す
よくありがちな操作を、よくありがちなNginxで試す。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
$ podman pull nginx Trying to pull registry.access.redhat.com/nginx... unsupported: This repo requires terms acceptance and is only available on registry.redhat.io Trying to pull registry.fedoraproject.org/nginx... manifest unknown: manifest unknown Trying to pull registry.centos.org/nginx... manifest unknown: manifest unknown Trying to pull docker.io/library/nginx... Getting image source signatures Copying blob c499e6d256d6 skipped: already exists Copying blob ffadbd415ab7 done Copying blob 74cda408e262 done Copying config ed21b7a8ae done Writing manifest to image destination Storing signatures ed21b7a8aee9cc677df6d7f38a641fa0e3c05f65592c592c9f28c42b3dd89291 $ podman images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/library/nginx latest ed21b7a8aee9 7 days ago 131 MB $ podman run -d -p 8080:80 nginx 9ec38c0053654250e5af8642d70c2482be5ad5c115f54a0d7a52c547fcbb028f $ curl localhost:8080 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> If you see this page, the nginx web server is successfully installed and working. Further configuration is required. For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>. <em>Thank you for using nginx.</em> </body> </html> $ podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9ec38c005365 docker.io/library/nginx:latest nginx -g daemon o... About a minute ago Up About a minute ago 0.0.0.0:8080->80/tcp vigilant_kapitsa |
さいごに
Dockerしか使ったことがなかった私が、Podmanをほんの少し触ってみましたが、(今回試した範囲では)コマンドの互換性のおかげで特に苦労せずに済みました。
ただ、コンテナ仮想化がここまで普及したのはDockerの功績だと思うし、どちらも頑張って欲しいと言う気持ちもあります。
以上.
コメント