
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
です。 。 Dockerハブ、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はこれらのレジストリに最初のレジストリから順番に連絡します。変更を保存してファイルを終了します。
画像の検索
コンテナイメージをプルする前に、さまざまなレジストリでそれらの可用性を検索するのが賢明です。
例
$ sudo podman search nginx

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

レジストリからログアウトするには、次のコマンドを実行します。
$ sudo podman logout registry.access.redhat.com
画像のプル
画像をプルするには、次の構文を使用します:
$ sudo podman pull image_name
たとえば、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
たとえば、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
以下の例では、コンテナIDを使用してリストされた最初のコンテナを停止しました
$ sudo podman stop 9daeaabdfdfc
podman ps
を使用して、コンテナが停止したことを確認できます 指図。画像を停止した後、実行中の画像は1つだけであることがはっきりとわかります。

podman ps -a
コマンドは、停止されたばかりのコンテナを構成する両方のコンテナを一覧表示します。
$ sudo podman ps -a

コンテナの起動
コンテナを開始するには、次の構文を使用します:
$ sudo podman start CONTAINER_ID
または
$ sudo podman start container_name
たとえば、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
例:
$ sudo podman logs webserv2

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

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

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

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

画像の削除
イメージを削除するには、まず、イメージから起動されたすべてのコンテナーを停止して削除したことを確認します。次に、rmi
を使用します 示されているオプション。
$ sudo podman rmi image_name
たとえば、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を使用してコンテナーを作成および管理することで、より優れたプロになるための確かな基盤が提供されたことを願っています。このガイドでは、Debian11Busterへのpodmanのインストールについて説明しました。