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を使用して、コンテナーを実行および管理できるようになりました。