お金をかけずにサーバーの勉強をしよう

Podmanインストール (RHELの Docker?)

2023年6月6日

メニューへ戻る

Rocky Linuxに Podmanをインストールして Dockerのコンテナを動かしてみます。

前々から RedHat Enterprise Linux(RHEL)周りで目にするようになっていた Podmanというコンテナ関連のソフトを少しイジってみました。

まずは本家サイトです。
Welcome to the new Podman Website!

そもそも Podmanってどういうものなのか、上記のサイトのドキュメントからの引用です。

Podman is a daemonless, open source, Linux native tool designed to make it easy to find, run, build, share and deploy applications using Open Containers Initiative (OCI) Containers and Container Images.

デーモンレス(常駐プログラム型ではない)と書いてありますが、これは常駐プログラムとして動いている Dockerとの対比なのだと思います。

で、OCIコンテナーを簡便に動かすためのものだということですね。

「dockerコマンドの代わりに podmanコマンドを使う感じ」と言えば Dokcer経験者には分かりやすいでしょうか、Dockerと同列のソフトウェアだと思いました。


当初は RHELだけのものと認識していたのですが、OSSであり、他の Linuxディストリビューションや Windows・Macでも動きますね。
もう一つの違いは、Linux環境だけにですが、コンテナ管理に Restful APIが用意されていること。
また引用です。

There is a RESTFul API to manage containers. We also have a remote Podman client that can interact with the RESTFul service. We currently support clients on Linux, Mac, and Windows. The RESTFul service is only supported on Linux.

リモートの Podmanクライアントとありますが、Podman Desktopのことかな?
とりあえずここではサーバーOSでのコンテナ運用を考えて、ローカルでの実行をしますので、リモートはいつかまた別な所で。


とりあえず、入れてみましょうか。

環境は以下の通りです。

2023年6月6日現在、Podmanの最新バージョンは 4.5.0 でしたが、Rocky Linux 9.2 に登録されているパッケージリポジトリからインストールすると上のバージョンになりました。

では dnfでインストールします。
長いですが、全部載せます。

[subro@Rocky-2 ~]$ sudo dnf install podman
Rocky Linux 9 - BaseOS                                                                                                                                              5.6 kB/s | 4.1 kB     00:00
Rocky Linux 9 - AppStream                                                                                                                                           6.2 kB/s | 4.5 kB     00:00
Rocky Linux 9 - AppStream                                                                                                                                           4.8 MB/s | 7.1 MB     00:01
Rocky Linux 9 - Extras                                                                                                                                              4.0 kB/s | 2.9 kB     00:00
依存関係が解決しました。
====================================================================================================================================================================================================
 パッケージ                                          アーキテクチャー                        バージョン                                            リポジトリー                               サイズ
====================================================================================================================================================================================================
インストール:
 podman                                              x86_64                                  2:4.4.1-9.el9_2                                       appstream                                   14 M
依存関係のインストール:
 conmon                                              x86_64                                  2:2.1.7-1.el9_2                                       appstream                                   51 k
 container-selinux                                   noarch                                  3:2.205.0-1.el9_2                                     appstream                                   50 k
 containers-common                                   x86_64                                  2:1-52.el9_2                                          appstream                                  126 k
 criu                                                x86_64                                  3.17-4.el9                                            appstream                                  544 k
 crun                                                x86_64                                  1.8.4-1.el9_2                                         appstream                                  201 k
 fuse-overlayfs                                      x86_64                                  1.11-1.el9_2                                          appstream                                   71 k
 fuse3                                               x86_64                                  3.10.2-5.el9.0.1                                      appstream                                   53 k
 fuse3-libs                                          x86_64                                  3.10.2-5.el9.0.1                                      appstream                                   91 k
 libnet                                              x86_64                                  1.2-6.el9                                             appstream                                   58 k
 libslirp                                            x86_64                                  4.4.0-7.el9                                           appstream                                   68 k
 netavark                                            x86_64                                  2:1.5.0-3.el9_2                                       appstream                                  2.6 M
 protobuf-c                                          x86_64                                  1.3.3-12.el9                                          baseos                                      35 k
 shadow-utils-subid                                  x86_64                                  2:4.9-6.el9                                           baseos                                      87 k
 slirp4netns                                         x86_64                                  1.2.0-3.el9                                           appstream                                   45 k
 yajl                                                x86_64                                  2.1.0-21.el9                                          appstream                                   37 k
弱い依存関係のインストール:
 aardvark-dns                                        x86_64                                  2:1.5.0-2.el9                                         appstream                                  998 k
 criu-libs                                           x86_64                                  3.17-4.el9                                            appstream                                   32 k

トランザクションの概要
====================================================================================================================================================================================================
インストール  18 パッケージ

ダウンロードサイズの合計: 19 M
インストール後のサイズ: 68 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(1/18): protobuf-c-1.3.3-12.el9.x86_64.rpm                                                                                                                          176 kB/s |  35 kB     00:00
(2/18): shadow-utils-subid-4.9-6.el9.x86_64.rpm                                                                                                                     295 kB/s |  87 kB     00:00
(3/18): container-selinux-2.205.0-1.el9_2.noarch.rpm                                                                                                                124 kB/s |  50 kB     00:00
(4/18): conmon-2.1.7-1.el9_2.x86_64.rpm                                                                                                                             337 kB/s |  51 kB     00:00
(5/18): slirp4netns-1.2.0-3.el9.x86_64.rpm                                                                                                                          633 kB/s |  45 kB     00:00
(6/18): fuse-overlayfs-1.11-1.el9_2.x86_64.rpm                                                                                                                      219 kB/s |  71 kB     00:00
(7/18): yajl-2.1.0-21.el9.x86_64.rpm                                                                                                                                104 kB/s |  37 kB     00:00
(8/18): criu-libs-3.17-4.el9.x86_64.rpm                                                                                                                              73 kB/s |  32 kB     00:00
(9/18): crun-1.8.4-1.el9_2.x86_64.rpm                                                                                                                               246 kB/s | 201 kB     00:00
(10/18): podman-4.4.1-9.el9_2.x86_64.rpm                                                                                                                            7.8 MB/s |  14 MB     00:01
(11/18): libslirp-4.4.0-7.el9.x86_64.rpm                                                                                                                            137 kB/s |  68 kB     00:00
(12/18): criu-3.17-4.el9.x86_64.rpm                                                                                                                                 377 kB/s | 544 kB     00:01
(13/18): netavark-1.5.0-3.el9_2.x86_64.rpm                                                                                                                          7.3 MB/s | 2.6 MB     00:00
(14/18): containers-common-1-52.el9_2.x86_64.rpm                                                                                                                    352 kB/s | 126 kB     00:00
(15/18): libnet-1.2-6.el9.x86_64.rpm                                                                                                                                156 kB/s |  58 kB     00:00
(16/18): aardvark-dns-1.5.0-2.el9.x86_64.rpm                                                                                                                        5.8 MB/s | 998 kB     00:00
(17/18): fuse3-3.10.2-5.el9.0.1.x86_64.rpm                                                                                                                          321 kB/s |  53 kB     00:00
(18/18): fuse3-libs-3.10.2-5.el9.0.1.x86_64.rpm                                                                                                                     533 kB/s |  91 kB     00:00
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                                                                                5.0 MB/s |  19 MB     00:03
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                                                                                                                                            1/1
  インストール中   : fuse3-libs-3.10.2-5.el9.0.1.x86_64                                                                                                                                        1/18
  scriptletの実行中: container-selinux-3:2.205.0-1.el9_2.noarch                                                                                                                                2/18
  インストール中   : container-selinux-3:2.205.0-1.el9_2.noarch                                                                                                                                2/18
  scriptletの実行中: container-selinux-3:2.205.0-1.el9_2.noarch                                                                                                                                2/18
  インストール中   : protobuf-c-1.3.3-12.el9.x86_64                                                                                                                                            3/18
  インストール中   : fuse3-3.10.2-5.el9.0.1.x86_64                                                                                                                                             4/18
  インストール中   : fuse-overlayfs-1.11-1.el9_2.x86_64                                                                                                                                        5/18
  scriptletの実行中: fuse-overlayfs-1.11-1.el9_2.x86_64                                                                                                                                        5/18
  インストール中   : aardvark-dns-2:1.5.0-2.el9.x86_64                                                                                                                                         6/18
  インストール中   : netavark-2:1.5.0-3.el9_2.x86_64                                                                                                                                           7/18
  インストール中   : libnet-1.2-6.el9.x86_64                                                                                                                                                   8/18
  インストール中   : criu-3.17-4.el9.x86_64                                                                                                                                                    9/18
  インストール中   : criu-libs-3.17-4.el9.x86_64                                                                                                                                              10/18
  インストール中   : libslirp-4.4.0-7.el9.x86_64                                                                                                                                              11/18
  インストール中   : slirp4netns-1.2.0-3.el9.x86_64                                                                                                                                           12/18
  インストール中   : yajl-2.1.0-21.el9.x86_64                                                                                                                                                 13/18
  インストール中   : crun-1.8.4-1.el9_2.x86_64                                                                                                                                                14/18
  インストール中   : containers-common-2:1-52.el9_2.x86_64                                                                                                                                    15/18
  インストール中   : conmon-2:2.1.7-1.el9_2.x86_64                                                                                                                                            16/18
  インストール中   : shadow-utils-subid-2:4.9-6.el9.x86_64                                                                                                                                    17/18
  インストール中   : podman-2:4.4.1-9.el9_2.x86_64                                                                                                                                            18/18
  scriptletの実行中: container-selinux-3:2.205.0-1.el9_2.noarch                                                                                                                               18/18
  scriptletの実行中: podman-2:4.4.1-9.el9_2.x86_64                                                                                                                                            18/18
  検証             : shadow-utils-subid-2:4.9-6.el9.x86_64                                                                                                                                     1/18
  検証             : protobuf-c-1.3.3-12.el9.x86_64                                                                                                                                            2/18
  検証             : container-selinux-3:2.205.0-1.el9_2.noarch                                                                                                                                3/18
  検証             : fuse-overlayfs-1.11-1.el9_2.x86_64                                                                                                                                        4/18
  検証             : conmon-2:2.1.7-1.el9_2.x86_64                                                                                                                                             5/18
  検証             : slirp4netns-1.2.0-3.el9.x86_64                                                                                                                                            6/18
  検証             : podman-2:4.4.1-9.el9_2.x86_64                                                                                                                                             7/18
  検証             : yajl-2.1.0-21.el9.x86_64                                                                                                                                                  8/18
  検証             : criu-libs-3.17-4.el9.x86_64                                                                                                                                               9/18
  検証             : criu-3.17-4.el9.x86_64                                                                                                                                                   10/18
  検証             : crun-1.8.4-1.el9_2.x86_64                                                                                                                                                11/18
  検証             : libslirp-4.4.0-7.el9.x86_64                                                                                                                                              12/18
  検証             : libnet-1.2-6.el9.x86_64                                                                                                                                                  13/18
  検証             : netavark-2:1.5.0-3.el9_2.x86_64                                                                                                                                          14/18
  検証             : containers-common-2:1-52.el9_2.x86_64                                                                                                                                    15/18
  検証             : aardvark-dns-2:1.5.0-2.el9.x86_64                                                                                                                                        16/18
  検証             : fuse3-libs-3.10.2-5.el9.0.1.x86_64                                                                                                                                       17/18
  検証             : fuse3-3.10.2-5.el9.0.1.x86_64                                                                                                                                            18/18

インストール済み:
  aardvark-dns-2:1.5.0-2.el9.x86_64       conmon-2:2.1.7-1.el9_2.x86_64    container-selinux-3:2.205.0-1.el9_2.noarch   containers-common-2:1-52.el9_2.x86_64   criu-3.17-4.el9.x86_64
  criu-libs-3.17-4.el9.x86_64             crun-1.8.4-1.el9_2.x86_64        fuse-overlayfs-1.11-1.el9_2.x86_64           fuse3-3.10.2-5.el9.0.1.x86_64           fuse3-libs-3.10.2-5.el9.0.1.x86_64
  libnet-1.2-6.el9.x86_64                 libslirp-4.4.0-7.el9.x86_64      netavark-2:1.5.0-3.el9_2.x86_64              podman-2:4.4.1-9.el9_2.x86_64           protobuf-c-1.3.3-12.el9.x86_64
  shadow-utils-subid-2:4.9-6.el9.x86_64   slirp4netns-1.2.0-3.el9.x86_64   yajl-2.1.0-21.el9.x86_64

完了しました!

何の問題もなくインストールできました。

続いて、Dockerよろしく nginxのコンテナを立ち上げてみます。
[docker]コマンドの書式のまま、コマンドを[podman]に替えてるだけ。

[subro@Rocky-2 ~]$ sudo podman run -dt -p 8080:80/tcp docker.io/library/nginx
Trying to pull docker.io/library/nginx:latest...
Getting image source signatures
Copying blob eed12bbd6494 done
Copying blob 831f51541d38 done
Copying blob fa7eb8c8eee8 done
Copying blob 7ff3b2b12318 done
Copying blob 0f67c7de5f2c done
Copying blob f03b40093957 skipped: already exists
Copying config f9c14fe76d done
Writing manifest to image destination
Storing signatures
70a75a3021fcac82f26a96ceda6e389c5fc9541fa9ef82bbe813248009efbefb

Dockerのコンテナリポジトリにあるコンテナイメージをそのまま持ってきて動いているようです。

[docker ps]を [podman]で。

[subro@Rocky-2 ~]$ sudo podman ps
CONTAINER ID  IMAGE                           COMMAND               CREATED         STATUS        PORTS                 NAMES
70a75a3021fc  docker.io/library/nginx:latest  nginx -g daemon o...  10 seconds ago  Up 9 seconds  0.0.0.0:8080->80/tcp  silly_perlman

まるで Dockerです。
上記のマニュアルにも、[docker]コマンドのエイリアスとして [podman]コマンドを設定しても問題なく動くとあったくらいですから似ているはずです。

これは Podmanと関係ないですが、Nginxコンテナに外部からアクセスするため Rocky Linuxのポート解除をしましょう。

[subro@Rocky-2 ~]$ sudo firewall-cmd --permanent --add-port 8080/tcp
Warning: ALREADY_ENABLED: 8080:tcp

[subro@Rocky-2 ~]$ sudo firewall-cmd --reload
success

開放できましたので、他のノードから WEBブラウザでアクセスしてみます。
我が家では [http://Rocky-2:8080]になります。
Nginx画面
まぁ、何のことはない、Nginxの画面ですわ。

Podmanでちゃんとコンテナが動いています。


Dockerをいじったことがあると何のことはないのですけど、運用を考えると常駐プロセスがないというのは良いと思います。

また、コンテナ管理用の Restful APIが用意されているということは、他ノードにある外部ツールとの連携がしやすくなっているのだと思います。
例えば Slackへの書き込みからコンテナ起動なんてことが比較的簡単にできるのだと思います。

周辺の情報を拾った限りは、Dockerを駆逐する立ち位置ではないようでした。
ネームバリューはまだまだ Dockerなので、Podmanを使う人はどんなメリットをして利用に至ったかを知りたいな〜と思いました。

少なくとも RHELでは Podman推しのようではあります。


これ以外に日本語書籍は無さげです。