Podman を使ってコンテナを起動してみた (その2)

こんにちは。サイオステクノロジー OSS サポート担当 Y です。

今回は、前回に引き続き Podman の検証実施してみました。(※以下の内容は CentOS 7.6/Podman 1.3.2/Docker 18.09.7 にて検証しています。)

■はじめに

Docker では、コンテナを起動するために containerd / dockerd の様な daemon を起動する必要があります。

実際に NGINX コンテナを 3つほど起動してみると、上記の様に containerd daemon 配下の containerd-shim の子プロセスとして、NGINX のプロセス (コンテナ) が動作していることが確認できます。

Podman は、Docker の様に daemon を起動しなくてもコンテナを起動することができるという特徴を持っているため、実際に検証してみました。

■動作検証

それではさっそく、検証してみます。今回の検証は前回利用した環境にて実施しています。インストール方法等についてはそちらをご参照ください。

まず、Podman のパッケージ (rpm パッケージ) で提供されているコマンド (バイナリファイル) にどの様なものがあるのかを確認してみます。

上記の様に、/usr/bin/podman と /usr/libexec/podman/conmon という 2つのバイナリがある様です。

コンテナ起動前に、上記 podman や conmon という名前の daemon の有無を確認してみます。

上記の通り、それらしき daemon は見当たりません。

この状態で、podman コマンドを利用し NGINX コンテナを 3つほど起動してみます。

すると、上記の通り containerd / dockerd の様な daemon が無い状態でもコンテナを起動することができました。

■コンテナ起動後のプロセス確認

前述した通り、Podman では daemon 無しでコンテナを起動することができたのですが、試しにコンテナが起動した状態で再度 ps コマンドにてホスト側のプロセスを確認してみました。

すると、先ほど rpm パッケージに含まれていた /usr/libexec/podman/conmon というコマンドが実行されていることが確認できました。

また、以下の様にこの /usr/libexec/podman/conmon の子プロセスとして NGINX プロセス (NGINX コンテナ) が起動していることが確認できました。

試しに /usr/libexec/podman/conmon に –help オプションを付けて実行してみたところ、以下の様なヘルプが出力されました。

この conmon について軽く調べてみたところ、GitHub (containers/libpod) の README OCI Projects Plans に “Conmon: Conmon is a tool for monitoring OCI runtimes.” という記載がありました。

詳細までは調査できていませんが、コンテナランタイムの監視 (?) を行うツールの様です。

■まとめ

今回の検証では、Docker の様に daemon (containerd/dockerd) が起動していなくても、Podman にてコンテナを起動することが可能であることを確認できました。

daemon 無しでコンテナを起動できる具体的な仕組みや、Podman に関連している conmon の詳細までは調べることができませんでしたが、他にも Podman に関連するツールが複数あるようなので、Podman の仕組みやその他のツール (Buildah や Skopeo 等) についても、機会があれば調査/検証を実施してみようと思います。

>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメント投稿

メールアドレスは表示されません。


*