8 Skopeoを使用したイメージの調査とコピー

この章では、Skopeoを使用してイメージを調査し、コンテナ・ストレージ・タイプ間でコピーする方法について説明します。

Skopeoはオプションのユーティリティであり、Podmanとは別にインストールしてリモート・レジストリ内のイメージを調査し、異なるタイプのOCI互換コンテナ記憶域間でイメージをコピーできます。Skopeoが機能するためにデーモンが実行している必要はありません。

ノート:

Skopeoコマンドを実行するために、root権限は不要です。エラーが発生した場合は、適切なプロキシ・サーバー設定を構成していることと、使用しているリモート・レジストリに対して必要なアクセス権があることを確認してください。

詳細は、skopeo(1)マニュアル・ページを参照してください。

リモート・レジストリ内のイメージの調査

skopeo inspectコマンドを使用して、レジストリ内のイメージに関する情報(作成日時、SHAダイジェスト署名、イメージに設定された環境変数など)を調査します。この情報は、レジストリ内の一致するイメージ名について、代替の使用可能なタグを調査する場合にも役立ちます。たとえば、oraclelinux:8-slimイメージに関する情報を表示するには、次のように入力します。

skopeo inspect docker://docker.io/library/oraclelinux:8-slim
{
    "Name": "docker.io/library/oraclelinux",
    "Digest": "sha256:410ddd2c0df85b96dc43af11530df8a7adc554e2a61b2645ff3893e53a6e6813",
    "RepoTags": [
        "5.11",
        "5",
        "6-slim",
        "6.10",
        "6.6",
        "6.7",
        "6.8",
        "6.9",
        "6",
        "7-slim",
        "7.0",
        "7.1",
        "7.2",
        "7.3",
        "7.4",
        "7.5",
        "7.6",
        "7.7",
        "7.8",
        "7",
        "8-slim",
        "8.0",
        "8.1",
        "8.2",
        "8"
    ],
    "Created": "2020-06-02T16:25:27.035497362Z",
    "DockerVersion": "18.09.7",
    "Labels": null,
    "Architecture": "amd64",
    "Os": "linux",
    "Layers": [
        "sha256:962e54b445ab56928c06f1d40aebe99a80b10b2bc428260bc931b24cec46e11c"
    ],
    "Env": [
        "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
    ]
}

イメージのデフォルトの構成設定およびビルド履歴を確認するには、--configオプションを使用します。

skopeo inspect --config docker://docker.io/library/oraclelinux:8-slim
{
    "created": "2020-06-02T16:25:27.035497362Z",
    "author": "Oracle Linux Product Team <ol-ovm-info_ww@oracle.com>",
    "architecture": "amd64",
    "os": "linux",
    "config": {
        "Env": [
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
        ],
        "Cmd": [
            "/bin/bash"
        ]
    },
    "rootfs": {
        "type": "layers",
        "diff_ids": [
            "sha256:4beda459d2bfe9960c5537dc4e04b43ffdc8f409897e092df2c0cc2094d82d31"
        ]
    },
    "history": [
        {
            "created": "2018-08-30T21:49:27.028879762Z",
            "created_by": "/bin/sh -c #(nop)  MAINTAINER Oracle Linux Product Team <ol-ovm-in...",
            "author": "Oracle Linux Product Team <ol-ovm-info_ww@oracle.com>",
            "empty_layer": true
        },
        {
            "created": "2020-06-02T16:25:26.6629159Z",
            "created_by": "/bin/sh -c #(nop) ADD file:336b... in / ",
            "author": "Oracle Linux Product Team <ol-ovm-info_ww@oracle.com>"
        },
        {
            "created": "2020-06-02T16:25:27.035497362Z",
            "created_by": "/bin/sh -c #(nop)  CMD [\"/bin/bash\"]",
            "author": "Oracle Linux Product Team <ol-ovm-info_ww@oracle.com>",
            "empty_layer": true
        }
    ]
}

skopeo inspectコマンドの詳細は、skopeo-insoect(1)マニュアル・ページを参照してください。

コンテナ記憶域タイプ間のイメージのコピー

skopeo copyコマンドを使用して、最初にローカルにダウンロードすることなくレジストリ間でイメージをコピーします。

skopeo copy docker://docker.io/library/oraclelinux:8-slim docker://example.com/os/oraclelinux:8-slim

宛先レジストリが署名を必要とする場合は、--sign-byパラメータを使用して要求されるkey-idを指定します。

containers-storage:接頭辞をイメージ名に追加することで、ローカルのPodmanコンテナ記憶域にイメージをコピーすることもできます。

skopeo copy docker://docker.io/library/oraclelinux:8-slim containers-storage:oraclelinux:8-slim

イメージをダウンロードして、その内部の内容をオフラインで確認する場合は、dir:接頭辞でディレクトリを指定します。たとえば、ホーム・ディレクトリのoraclelinuxフォルダにoraclelinux:8-slimイメージを抽出するには、次のように入力します。

skopeo copy docker://docker.io/library/oraclelinux:8-slim dir:/home/$USER/oraclelinux

この例では、oraclelinuxフォルダにはmanifest.jsonファイルと、コピーされたイメージを表す複数のtarballが含まれています。

使用可能な接頭辞とフラグの詳細は、skopeo-copy(1)マニュアル・ページを参照してください。

コンテナ記憶域からのイメージの削除

skopeo deleteコマンドを使用して、リモート・レジストリまたはローカル・コンテナ記憶域からイメージを削除します。

skopeo delete containers-storage:oraclelinux:8-slim

skopeo deleteコマンドの詳細は、skopeo-delete(1)マニュアル・ページを参照してください。