RedHatによって開発されたPodmanは、人気のあるDockerランタイムエンジンのドロップイン代替品として設計された、無料のオープンソースのデーモンレスコンテナエンジンです。 Dockerと同様に、コンテナーイメージとOCIコンテナーを使用してアプリケーションを簡単に構築、実行、デプロイ、共有できます(Open Container Initiative)。 Podmanはユーザーとネットワークの名前空間を使用します。Dockerと比較して、Podmanはより分離された安全であると見なされます。 DockerのほとんどのコマンドはPodmanで動作します。 したがって、Dockerコマンドの実行に精通している場合は、podmanを使用するのはとても簡単です。
このガイドでは、インストール方法を学びます podman の上 Debian 11 ブルズアイ。
Debian11にPodmanをインストールする
podmanパッケージ、ライブラリ、および依存関係は、公式のDebianリポジトリですでにホストされています。 したがって、APTパッケージマネージャーを使用してpodmanを簡単にインストールできます。
まず、パッケージリストを更新します。
$ sudo apt update
次に、次のようにpodmanコンテナエンジンをインストールします。
$ sudo apt install podman
続行するように求められたら、「Y」と入力してEnterキーを押します。
インストールされているPodmanのバージョンを確認するには、次のコマンドを実行します。
$ podman --version
podmanコンテナエンジンの詳細を収集するには、次のコマンドを実行します。
$ sudo podman info
以下のような複雑な詳細を表示する出力が急増するはずです。

Podmanレジストリを構成する
レジストリファイル registry.conf
は、イメージをプッシュまたはプルするときに使用するコンテナレジストリを指定する構成ファイルです。 ファイルへのフルパスは /etc/containers/registries.conf
。 ドッカーハブ、Quay.io、RedHatの、および多くを含む、そこに様々なコンテナのレジストリがあります。
図のように、テキストエディタを使用してファイルを表示できます。
# sudo /etc/containers/registries.conf
Dockerでは、コンテナレジストリはDockerHubのみです。 Podmanは、ユーザーが任意のレジストリから画像を検索およびプルするためのより多くの自由を提供します。 次の行を追加することで、コンテナレジストリのリストを定義できます。
unqualified-search-registries = [ ‘registry.access.redhat.com’, ‘registry.redhat.io’, ‘docker.io’]
実行時 podman search
また podman pull
コマンドを実行すると、podmanはこれらのレジストリに最初のレジストリから順番に連絡します。 Save 変更してファイルを終了します。
画像を検索する
コンテナイメージをプルする前に、さまざまなレジストリでそれらの可用性を検索するのが賢明です。
にとって example
$ sudo podman search nginx

出力には、レジストリ名、イメージ名、簡単な説明など、豊富な情報が表示されます。
レジストリにログインする
イメージのプルまたはプッシュを開始する前に、レジストリにログインする必要があります。 の中に example 以下では、Redhatアカウントにログインしています。これにより、実際にはレジストリにアクセスできます。
$ sudo podman login registry.access.redhat.com

レジストリからログアウトするには、次のコマンドを実行します。
$ sudo podman logout registry.access.redhat.com
画像を引っ張る
画像をプルするには、次の構文を使用します。
$ sudo podman pull image_name
にとって example、Nginxの公式ビルドイメージをプルするには、次のコマンドを実行します。
$ sudo podman pull docker.io/library/nginx

別の画像を引っ張ってみましょう。 次のように、公式のMongoDBイメージをプルします。
$ sudo podman pull docker.io/library/mongo

画像の一覧表示
すべての画像を一覧表示するには、コマンドを発行します。
$ sudo podman images

画像からコンテナを作成する
これで、Debianシステム上にイメージが存在するようになったので、示されている構文を使用してコンテナーを起動できます。 -dオプションは、コンテナをバックグラウンドで実行し、 --name
オプションは、コンテナのカスタム名を指定します
$ sudo podman run -d --name container_name image
にとって example、nginxのイメージからバックグラウンドと呼ばれるwebserv1でコンテナを起動するには、コマンドを実行します。
$ sudo podman run -d --name webserv1 docker.io/library/nginx
同じイメージから複数のコンテナを起動できます。 同じNginxイメージからwebserv2という別のコンテナを起動してみましょう。
$ sudo podman run -d --name webserv2 docker.io/library/nginx

コンテナの一覧表示
このセクションでは、コンテナで使用できるさまざまなコマンドについて説明します。
現在実行中のコンテナを確認するには、次のコマンドを発行します。
$ sudo podman ps
出力は、コンテナーID、IMAGE名、コンテナーを実行しているコマンド、作成日、ステータスなどの情報を提供する列に表示されます。

実行を終了したコンテナを含むすべてのコンテナを一覧表示するには、次の手順に従います。
$ sudo podman ps -a
コンテナを停止する
コンテナを停止するには、構文を使用します
$ sudo podman stop CONTAINER_ID
また
$ sudo podman stop container_name
の中に example、以下では、コンテナIDを使用してリストされた最初のコンテナを停止しました
$ sudo podman stop 9daeaabdfdfc
を使用して、コンテナが停止したことを確認できます。 podman ps
指図。 画像を停止した後、実行中の画像は1つだけであることがはっきりとわかります。

The podman ps -a
コマンドは、停止されたばかりのコンテナーを構成する両方のコンテナーをリストします。
$ sudo podman ps -a

コンテナの起動
コンテナを開始するには、次の構文を使用します。
$ sudo podman start CONTAINER_ID
また
$ sudo podman start container_name
にとって example、webserv1を開始するには、次を実行します。
$ sudo podman start webserv1

コンテナのシェルにアクセスする
コンテナのシェルへのアクセスは、オペレーティングシステムのコンテナを使用して最もよく示されます。
ここでは、Ubuntuイメージをダウンロードまたはプルします。
$ sudo podman pull docker.io/library/ubuntu
イメージから、コンテナを作成または起動し、を使用してシェルにアクセスします。 -it
オプション。
$ sudo podman run --name ubuntu -it docker.io/library/ubuntu /bin/bash

- -i、–interactive接続されていない場合でもSTDINを開いたままにします
- -t、–tty疑似TTYを割り当てます。 デフォルトはfalseです
コンテナのログを確認する
コンテナのログを確認するには、次の構文を使用します。
$ sudo podman logs container_name
にとって example:
$ sudo podman logs webserv2

コンテナ統計を表示する
実行中のすべてのコンテナーの統計を表示するには、次のコマンドを実行します。
$ sudo podman stats

コンテナを検査する
コンテナに関する複雑な詳細を印刷するには、検査オプションを使用します。
$ sudo podman inspect webserv2
これにより、長い出力がJSON形式で出力されます。

–formatオプションを使用して、出力をフィルタリングします。 にとって example webserv2コンテナのIPアドレスを出力するには実行
$ sudo podman inspect webserv2 --format '{{.NetworkSettings.IPAddress}}'
次に、IPの追加情報を実行できます。 example を使用して curl HTTPヘッダーを取得します。
$ curl -I ip-address

コンテナの削除
コンテナを完全に削除または削除するには、実行中の場合は最初にコンテナを停止し、最後にコンテナを削除します。 これで example、websev1コンテナを停止して削除しました。
$ sudo podman stop webserv1
次に、停止したコンテナを削除します。
$ sudo podman rm webserv1

画像を削除する
イメージを削除するには、まず、イメージから起動されたすべてのコンテナーを停止して削除したことを確認します。 次に、 rmi
示されているオプション。
$ sudo podman rmi image_name
にとって example、ubuntuイメージを削除するには、次のコマンドを実行します。
$ sudo podman rmi docker.io/library/ubuntu

最新のPodmanをインストールする-ソースからコンパイルする
ソースから開発バージョンをインストールすることで、Podmanの最新バージョンをテストできます。
01.依存関係の構築と実行
sudo apt-get install
btrfs-progs
git
golang-go
go-md2man
iptables
libassuan-dev
libbtrfs-dev
libc6-dev
libdevmapper-dev
libglib2.0-dev
libgpgme-dev
libgpg-error-dev
libprotobuf-dev
libprotobuf-c-dev
libseccomp-dev
libselinux1-dev
libsystemd-dev
pkg-config
runc
make
libapparmor-dev
gcc
cmake
uidmap
libostree-dev
02.Conmonをインストールします
conmonはの仕事はコンテナの主要なプロセスを監視することであることを小さなCプログラムであるコンテナモニタです。
git clone https://github.com/containers/conmon
cd conmon
make
sudo make podman
sudo cp /usr/local/libexec/podman/conmon /usr/local/bin/
03.runcをインストールします
runcの最新バージョンをインストールするには
git clone https://github.com/opencontainers/runc.git $GOPATH/src/github.com/opencontainers/runc
cd $GOPATH/src/github.com/opencontainers/runc
make BUILDTAGS="selinux seccomp"
sudo cp runc /usr/bin/runc
03. Container Network Interface(CNI)をインストールします
CNIプラグインは、ネットワークインターフェイスをコンテナネットワーク名前空間に挿入するために使用されます。
git clone https://github.com/containernetworking/plugins.git $GOPATH/src/github.com/containernetworking/plugins
cd $GOPATH/src/github.com/containernetworking/plugins
./build_linux.sh
sudo mkdir -p /usr/libexec/cni
sudo cp bin/* /usr/libexec/cni
ネットワークをセットアップする
sudo mkdir -p /etc/cni/net.d
curl -qsSL https://raw.githubusercontent.com/containers/libpod/master/cni/87-podman-bridge.conflist | sudo tee /etc/cni/net.d/99-loopback.conf
構成を追加します
sudo mkdir -p /etc/containers
sudo curl -L -o /etc/containers/registries.conf https://src.fedoraproject.org/rpms/containers-common/raw/main/f/registries.conf
sudo curl -L -o /etc/containers/policy.json https://src.fedoraproject.org/rpms/containers-common/raw/main/f/default-policy.json
04.ソースからPodmanをインストールします
git clone https://github.com/containers/podman/ $GOPATH/src/github.com/containers/podman
cd $GOPATH/src/github.com/containers/podman
make
sudo make install
$ podman --version
podman version 4.0.0-dev
結論
podmanを使用してコンテナーを作成および管理することで、より優れたプロになるための確かな基盤が提供されたことを願っています。 このガイドでは、Debian 11Busterへのpodmanのインストールについて説明しました。