Podman(POD MANager)は、Dockerのドロップイン代替としてRedHatによって開発されたOCI準拠のコンテナーエンジンです。コマンドラインインターフェイスを介して、コンテナ、イメージ、およびボリュームを管理および実行するために使用されます。 DockerとPodmanはどちらも同様のソフトウェアです。唯一の違いは、Podmanはコンテナを実行するためにデーモンを必要としないのに対し、DockerはDockerEngineデーモンを必要とすることです。 Podmanは、libpodライブラリを使用してコンテナエコシステム全体を管理します。
このチュートリアルでは、Debian11にPodmanをインストールして使用する方法を紹介します。
- Debian11を実行しているサーバー。
- ルートパスワードはサーバーで構成されています。
Podmanパッケージは、Debian11のデフォルトリポジトリに含まれています。次のコマンドを実行するだけでインストールできます:
apt-get install podman -y
Podmanをインストールしたら、以下のコマンドを使用してPodmanのバージョンを確認します。
podman --version
次の出力にPodmanバージョンが表示されます。
podman version 3.0.1
次のコマンドを使用して、Podmanの詳細情報を取得できます。
podman info
次の出力が得られます:
host: arch: amd64 buildahVersion: 1.19.6 cgroupManager: systemd cgroupVersion: v2 conmon: package: 'conmon: /usr/bin/conmon' path: /usr/bin/conmon version: 'conmon version 2.0.25, commit: unknown' cpus: 2 distribution: distribution: debian version: "11" eventLogger: journald hostname: debian11 idMappings: gidmap: null uidmap: null kernel: 5.10.0-8-amd64 linkmode: dynamic memFree: 3365183488 memTotal: 4122267648 ociRuntime: name: crun package: 'crun: /usr/bin/crun' path: /usr/bin/crun version: |- crun version 0.17 commit: 0e9229ae34caaebcb86f1fde18de3acaf18c6d9a spec: 1.0.0 +SYSTEMD +SELINUX +APPARMOR +CAP +SECCOMP +EBPF +YAJL os: linux remoteSocket: exists: true path: /run/podman/podman.sock security: apparmorEnabled: true capabilities: CAP_CHOWN,CAP_DAC_OVERRIDE,CAP_FOWNER,CAP_FSETID,CAP_KILL,CAP_NET_BIND_SERVICE,CAP_SETFCAP,CAP_SETGID,CAP_SETPCAP,CAP_SETUID,CAP_SYS_CHROOT rootless: false seccompEnabled: true selinuxEnabled: false
OCIレジストリを追加
Podmanは、レジストリ構成ファイル/etc/containers/registries.confを使用して、インターネットからすべてのコンテナーイメージをプルします。したがって、それを編集してレジストリを定義する必要があります:
nano /etc/containers/registries.conf
ファイルの最後に次の行を追加します。
[registries.insecure] registries = [ ] # If you need to block pull access from a registry, uncomment the section below # and add the registries fully-qualified name. # Docker only [registries.block] registries = [ ]
終了したら、ファイルを保存して閉じます。
このセクションでは、Podmanコマンドを使用して画像をプルし、コンテナを実行する方法を示します。
Debianイメージをプルするには、次のコマンドを実行します:
podman pull debian
次の出力が得られます:
Resolved "debian" as an alias (/etc/containers/registries.conf.d/shortnames.conf) Trying to pull docker.io/library/debian:latest... Getting image source signatures Copying blob 647acf3d48c2 done Copying config 827e561138 done Writing manifest to image destination Storing signatures 827e5611389abf13dad1057e92f163b771febc0bcdb19fa2d634a7eb0641e0cc
次のコマンドを使用して、ダウンロードした画像を表示できます。
podman images
次の出力が得られます:
REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/library/debian latest 827e5611389a 11 days ago 129 MB
次に、次のコマンドを使用して、Debianイメージからコンテナを実行します。
podman run -dit debian:latest
次の出力が得られます:
f85c4df5ab787912c984ec820571da7b95b32736ef94ba691d9ab5019c5b5103
次のコマンドを使用して、実行中のすべてのコンテナを一覧表示できます。
podman ps
次の出力が表示されます。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f85c4df5ab78 docker.io/library/debian:latest bash 13 seconds ago Up 13 seconds ago competent_cori
実行中のコンテナを検査するには、コンテナIDを指定してPodmanコマンドを実行します。
podman inspect f85c4df5ab78
次の出力が得られます:
[ { "Id": "f85c4df5ab787912c984ec820571da7b95b32736ef94ba691d9ab5019c5b5103", "Created": "2021-11-28T07:00:12.795302341Z", "Path": "bash", "Args": [ "bash" ], "State": { "OciVersion": "1.0.2-dev", "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 6881, "ConmonPid": 6878, "ExitCode": 0, "Error": "", "StartedAt": "2021-11-28T07:00:13.551753552Z", "FinishedAt": "0001-01-01T00:00:00Z", "Healthcheck": { "Status": "", "FailingStreak": 0, "Log": null } },
コンテナログを確認するには、次のコマンドを実行します。
podman logs f85c4df5ab78
実行中のコンテナに接続する場合は、次のコマンドを実行します。
podman exec -it f85c4df5ab78 /bin/bash
以下に示すように、コンテナシェルに入ります:
[email protected]:/#
コンテナシェルを終了するには、次のコマンドを実行します。
[email protected]:/# exit
Podmanを使用して、コンテナを開始、停止、および削除することもできます。
実行中のコンテナーを停止するには、次のコマンドを実行します。
podman stop f85c4df5ab78
これで、次のコマンドを使用して、停止したコンテナを確認できます。
podman ps -a
次の出力が表示されます。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f85c4df5ab78 docker.io/library/debian:latest bash 3 minutes ago Exited (137) 10 seconds ago competent_cori
停止したコンテナを削除するには、次のコマンドを実行します。
podman rm f85c4df5ab78
最新のコンテナを停止する場合は、次のコマンドを実行します。
podman stop --latest
最新のコンテナを起動するには、次のコマンドを実行します。
podman start --latest
最新のコンテナを削除するには、次のコマンドを実行します。
podman rm --latest
実行中のすべてのコンテナーを削除するには、次のコマンドを実行します。
podman rm -f `podman ps -aq`
画像を削除するには、次のコマンドを実行します。
podman rmi 827e5611389a
次の出力が得られます:
Untagged: docker.io/library/debian:latest Deleted: 827e5611389abf13dad1057e92f163b771febc0bcdb19fa2d634a7eb0641e0cc
上記の投稿では、Debian 11にPodmanをインストールして使用する方法を説明しました。これで、Dockerの代わりにPodmanを使用して、コンテナーを実行および管理できるようになりました。