第18章 コンテナーでの Skopeo、Buildah、および Podman の実行
コンテナーで Skopeo、Buildah、および Podman を実行できます。
Skopeo を使用すると、すべてのレイヤーでイメージ全体をダウンロードすることなく、リモートレジストリーのイメージを検査できます。また、Skopeo を使用して、イメージのコピー、イメージの署名、イメージの同期、さまざまな形式およびレイヤー圧縮でのイメージ変換を行うこともできます。
Buildah を使用すると、OCI コンテナーイメージのビルドが容易になります。Buildah を使用すると、作業コンテナーをゼロから作成することも、イメージを開始点として使用して作成することも可能です。作業コンテナーからか、Containerfile
の指示を使用して、イメージを作成できます。作業コンテナーの root ファイルシステムをマウントおよびアンマウントできます。
Podman を使用すると、コンテナーおよびイメージ、それらのコンテナーにマウントされたボリューム、およびコンテナーのグループから作成された Pod を管理できます。Podman は、コンテナーライフサイクル管理の libpod
ライブラリーに基づいています。libpod
ライブラリーは、コンテナー、Pod、コンテナーイメージ、およびボリュームを管理するための API を提供します。
コンテナーで Buildah、Skopeo、および Podman を実行する理由:
CI/CD システム:
- Podman および Skopeo: Kubernetes で CI/CD システムを実行するか、OpenShift を使用してコンテナーイメージをビルドし、これらのイメージを異なるコンテナーレジストリーに配布できます。Skopeo を Kubernetes ワークフローに統合するには、Skopeo をコンテナーで実行する必要があります。
-
Buildah: 常にイメージをビルドする Kubernetes または OpenShift CI/CD システムに OCI/コンテナーイメージをビルドします。以前は、Docker ソケットを使用してコンテナーエンジンに接続し、
docker build
コマンドを実行していました。これは、パスワードなしにシステムに root アクセスを提供するのと同じで、安全ではありません。このため、Red Hat はコンテナーで Buildah を使用することを推奨します。
各種バージョン:
- All: ホストで古いオペレーティングシステムを実行していても、最新バージョンの Skopeo、Buildah、または Podman を実行します。このソリューションは、コンテナーでコンテナーツールを実行します。たとえば、これは、最新版をネイティブで使用できない Red Hat Enterprise Linux 7 コンテナーホストで、Red Hat Enterprise Linux 8 で提供される最新版のコンテナーツールを実行するのに役立ちます。
HPC 環境:
- all: HPC 環境で一般的な制限は、root 以外のユーザーがホストにパッケージをインストールできないことです。コンテナーで Skopeo、Buildah、または Podman を実行すると、root 以外のユーザーとしてこの特定のタスクを実行することができます。
18.1. コンテナーでの Skopeo の実行
Skopeo を使用してリモートコンテナーイメージを検査できます。コンテナーで Skopeo を実行すると、コンテナーの root ファイルシステムがホストの root ファイルシステムから分離されることを意味します。ホストとコンテナー間でファイルを共有またはコピーするには、ファイルとディレクトリーをマウントする必要があります。
前提条件
-
container-tools
モジュールがインストールされている。
手順
registry.redhat.io レジストリーにログインします。
$ podman login registry.redhat.io Username: myuser@mycompany.com Password: <password> Login Succeeded!
registry.redhat.io/rhel8/skopeo
コンテナーイメージを取得します。$ podman pull registry.redhat.io/rhel8/skopeo
Skopeo を使用して、リモートコンテナーイメージ
registry.access.redhat.com/ubi8/ubi
を検査します。$ podman run --rm registry.redhat.io/rhel8/skopeo \ skopeo inspect docker://registry.access.redhat.com/ubi8/ubi { "Name": "registry.access.redhat.com/ubi8/ubi", ... "Labels": { "architecture": "x86_64", ... "name": "ubi8", ... "summary": "Provides the latest release of Red Hat Universal Base Image 8.", "url": "https://access.redhat.com/containers/#/registry.access.redhat.com/ubi8/images/8.2-347", ... }, "Architecture": "amd64", "Os": "linux", "Layers": [ ... ], "Env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "container=oci" ] }
--rm
オプションは、コンテナーの終了後にregistry.redhat.io/rhel8/skopeo
イメージを削除します。