Red Hat Training

A Red Hat training course is available for RHEL 8

13.3. skopeo

skopeo コマンドを使用すれば、docker デーモンや docker コマンドを使用しなくても、レジストリーからコンテナーイメージを扱うことができます。レジストリーには、Docker レジストリー、独自のローカルレジストリー、Red Hat Quay、または OpenShift レジストリーを追加できます。skopeo で実行できることは次のとおりです。

  • 検証 - skopeo inspect コマンドの出力は、docker inspect コマンドで表示されるもの (コンテナーイメージに関する詳細な情報) と似ています。この出力は、json 形式 (デフォルト) または raw 形式 (--raw オプションを使用) の可能性があります。
  • コピー - skopeo copy を使用すると、コンテナーイメージをレジストリーから別のレジストリーまたはローカルディレクトリーにコピーできます。
  • レイヤー - skopeo layers コマンドを使用すると、イメージに関連付けられているレイヤーをダウンロードして、tarball および関連付けられているマニフェストファイルとしてローカルディレクトリーに保存できます。

コンテナーまたはイメージライブラリーに依存する buildah コマンドやその他のツールのように、skopeo コマンドは、Docker に関連付けられているもの以外のコンテナーストレージ領域からのイメージを処理できます。他のタイプのコンテナーストレージへの利用可能な変換には、コンテナーストレージ (buildah および CRI-O が保存するイメージ用)、ostree (アトミックおよびシステムコンテナー用)、oci (OCI 準拠のディレクトリーに格納されているコンテンツ用) などがあります。詳細は skopeo の man ページ を参照してください。

skopeo を試すには、ローカルレジストリーを設定してから、イメージレイヤーの検証、コピー、およびダウンロードを行うコマンドを実行します。この例に従う場合は、まず次の手順を実行します。

  • ローカルレジストリー(Red Hat Quay など) をインストールします。RHEL 7 の docker-distribution パッケージで利用可能なコンテナーレジストリーソフトウェアは、RHEL 8 では利用できません。
  • 最新の RHEL イメージをローカルシステム (podman pull ubi8/ubi) にプルします。
  • RHEL イメージのタグを再登録し、以下のようにローカルレジストリーにプッシュします。

    # podman tag ubi8/ubi localhost/myubi8
    # podman push localhost/myubi8

本セクションの残りの部分では、RHEL イメージからレイヤーを検証、コピー、および取得する方法を説明します。

注記

デフォルトでは、skopeo ツールは TLS 接続を必要とします。暗号化されていない接続を使用しようとすると失敗します。デフォルトを上書きして http レジストリーを使用するには、文字列 <registry>/<image> の前に http: と付けます。

13.3.1. skopeo でコンテナーイメージの検証

レジストリーからコンテナーイメージを検証する場合は、コンテナーの形式 (docker など)、レジストリーの場所 (docker.io、localhost など)、およびリポジトリー/イメージ (ubi8/ubi など) を指定する必要があります。

以下の例では、Docker レジストリーから mariadb コンテナーイメージを検証します。

# skopeo inspect docker://docker.io/library/mariadb
{
    "Name": "docker.io/library/mariadb",
    "Tag": "latest",
    "Digest": "sha256:d3f56b143b62690b400ef42e876e628eb5e488d2d0d2a35d6438a4aa841d89c4",
    "RepoTags": [
        "10.0.15",
        "10.0.16",
        "10.0.17",
        "10.0.19",
...
    "Created": "2018-06-10T01:53:48.812217692Z",
    "DockerVersion": "1.10.3",
    "Labels": {},
    "Architecture": "amd64",
    "Os": "linux",
    "Layers": [
...

タグ付けされた localhost/myubi8 を、ローカルシステムで実行しているコンテナーリポジトリーへプッシュしたとすると、次のコマンドでそのイメージを検証します。

# skopeo inspect docker://localhost/myubi8
{
    "Name": "localhost/myubi8",
    "Tag": "latest",
    "Digest": "sha256:4e09c308a9ddf56c0ff6e321d135136eb04152456f73786a16166ce7cba7c904",
    "RepoTags": [
        "latest"
    ],
    "Created": "2018-06-16T17:27:13Z",
    "DockerVersion": "1.7.0",
    "Labels": {
        "Architecture": "x86_64",
        "Authoritative_Registry": "registry.access.redhat.com",
        "BZComponent": "rhel-server-docker",
        "Build_Host": "rcm-img01.build.eng.bos.redhat.com",
        "Name": "myubi8",
        "Release": "75",
        "Vendor": "Red Hat, Inc.",
        "Version": "8.0"
    },
    "Architecture": "amd64",
    "Os": "linux",
    "Layers": [
        "sha256:16dc1f96e3a1bb628be2e00518fec2bb97bd5933859de592a00e2eb7774b6ecf"
    ]
}