12 Skopeo
Skopeoを使用して、コンテナ・ストレージ・タイプ間でOpen Container Initiative準拠のイメージを検査およびコピーします。
Skopeoは、Podmanに加えてインストールしてリモート・レジストリ内のイメージを検査し、様々なタイプのOpen Container Initiative互換コンテナ・ストレージ間でイメージをコピーできるオプションのユーティリティです。 Skopeoが機能するためにデーモンが実行している必要はありません。
ノート:
Skopeoコマンドを実行するために、root権限は不要です。 エラーが発生した場合は、適切なプロキシ・サーバー設定を構成していることと、使用しているリモート・レジストリに対して必要なアクセス権があることを確認してください。
詳細は、skopeo(1)マニュアル・ページを参照してください。
イメージの調査
skopeo inspectコマンドを使用して、コンテナ・レジストリ内のイメージに関する情報を検査します。
skopeo inspectコマンドは、作成日、SHAダイジェスト・シグネチャ、イメージに設定された環境変数など、コンテナに関する情報を出力します。 この情報は、レジストリ内のイメージ名に使用可能なタグを検査する場合にも役立ちます。
skopeo inspectコマンドの詳細は、skopeo-inspect(1)マニュアル・ページを参照してください。
例12-1コンテナ・レジストリ内のイメージの検査
skopeo inspect docker://container-registry.oracle.com/os/oraclelinux:9
出力は次のようになります:
{
"Name": "container-registry.oracle.com/os/oraclelinux",
"Digest": "sha256:afeedad1979892ba77973ea9900dc2604873651b0ee8868bffff8c7987e32bb3",
"RepoTags": [
"10-slim",
"10",
"5.11",
"5",
"6-slim",
"6.10",
"6.6",
"6.7",
"6.8",
"6.9",
"6",
"7-slim-amd64",
"7-slim-arm64v8",
"7-slim-fips-amd64",
"7-slim-fips-arm64v8",
"7-slim-fips",
"7-slim",
"7.0",
"7.1",
"7.2",
"7.3",
"7.4",
"7.5",
"7.6",
"7.7",
"7.8",
"7.9",
"7",
"8-arm64v8",
"8-slim-arm64v8",
"8-slim-fips-amd64",
"8-slim-fips-arm64v8",
"8-slim-fips",
"8-slim",
"8.0",
"8.1",
"8.10-slim-fips",
"8.10-slim",
"8.10",
"8.2",
"8.3",
"8.4",
"8.5",
"8.6",
"8.7",
"8.8",
"8.9-slim-fips",
"8.9-slim",
"8.9",
"8",
"9-slim-fips",
"9-slim",
"9",
"9test",
"latest"
],
"Created": "2025-08-01T17:33:19.437546569Z",
"DockerVersion": "",
"Labels": {
"io.buildah.version": "1.33.11"
},
"Architecture": "amd64",
"Os": "linux",
"Layers": [
"sha256:25ef70384958aefe7777e15722705fbaccd630a1aabe14030e2ad22b3c205c37"
],
"LayersData": [
{
"MIMEType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"Digest": "sha256:25ef70384958aefe7777e15722705fbaccd630a1aabe14030e2ad22b3c205c37",
"Size": 99740095,
"Annotations": null
}
],
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
]
}
例12-2コンテナ・レジストリ内のイメージのデフォルト構成の検査
--configオプションを含めることで、デフォルトの構成設定およびイメージのビルド履歴を確認します。
skopeo inspect --config docker://container-registry.oracle.com/os/oraclelinux:9
出力は次のようになります:
{
"created": "2025-08-01T17:33:19.437546569Z",
"architecture": "amd64",
"os": "linux",
"config": {
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/bash"
],
"Labels": {
"io.buildah.version": "1.33.11"
}
},
"rootfs": {
"type": "layers",
"diff_ids": [
"sha256:0ae592ddaa5b488f567f350e0367e2b3f91ea04a23ea8931017916ecc0f922e4"
]
},
"history": [
{
"created": "2025-08-01T17:33:17.828674963Z",
"created_by": "/bin/sh -c #(nop) ADD file:9d2d55843e86c79ec0db8291fe7f516630a7f7fe2f0a90f2af552882cd94c7e9 in / "
},
{
"created": "2025-08-01T17:33:19.437694874Z",
"created_by": "/bin/sh -c #(nop) CMD [\"/bin/bash\"]",
"comment": "FROM c50fc3f29ef2",
"empty_layer": true
}
]
}
例12-3安全でないプライベート・レジストリ内のイメージの検査
skopeo inspect --tls-verify=false docker://localhost:5000/myimage:v1
イメージのコピー
skopeo copyコマンドを使用して、ローカル・ストレージやコンテナ・レジストリなどのコンテナ・ストレージ・タイプ間でコンテナ・イメージをコピーします。
skopeo copyコマンドを使用して、最初にローカルにダウンロードすることなくレジストリ間でイメージをコピーします。 イメージをローカルのPodmanコンテナ・ストレージにコピーすることもできます。
skopeo copyコマンドの詳細は、skopeo-copy(1)マニュアル・ページを参照してください。
例12-4あるレジストリから別のレジストリへのイメージのコピー
skopeo copy docker://container-registry.oracle.com/os/oraclelinux:9-slim docker://myregistry.example.com:5000/oraclelinux:9-slim
例12-5レジストリから非セキュアなプライベート・レジストリへのイメージのコピー
イメージをセキュアでないプライベート・レジストリにコピーするには、--dest-tls-verify=falseオプションを含めます。
skopeo copy docker://container-registry.oracle.com/os/oraclelinux:9-slim --dest-tls-verify=false docker://localhost:5000/ol9image:v1
例12-6プライベート・セキュア・レジストリから別のレジストリへのイメージのコピー
セキュアでないプライベート・レジストリからイメージをコピーするには、--src-tls-verify=falseオプションを含めます。
skopeo copy --src-tls-verify=false docker://localhost:5000/ol9image:v2 docker://myregistry.example.com:5000/oraclelinux:v2
例12-7レジストリからローカル・ストレージへのイメージのコピー
ローカル記憶域にイメージをコピーするには、宛先イメージのcontainers-storage:接頭辞を使用します。
skopeo copy docker://container-registry.oracle.com/os/oraclelinux:9-slim containers-storage:oraclelinux:9-slim
例12-8ローカル・ストレージからセキュアでないプライベート・レジストリへのイメージのコピー
ローカル・ストレージからイメージをコピーするには、ソース・イメージのcontainers-storage:接頭辞を使用します。
skopeo copy containers-storage:localhost/oraclelinux:9-slim --dest-tls-verify=false docker://localhost:5000/ol9image:v2
例12-9ローカル・ストレージ抽出へのイメージのコピー
イメージをダウンロードして、その内部の内容をオフラインで確認する場合は、dir:接頭辞でディレクトリを指定します。 たとえば、oraclelinux:9-slimイメージをホーム・ディレクトリのoraclelinuxフォルダに抽出するには:
skopeo copy docker://container-registry.oracle.com/os/oraclelinux:9-slim dir:/home/$USER/oraclelinux
oraclelinuxフォルダには、manifest.jsonファイルと、コピーされたイメージを表す複数のtarボールが含まれます。
イメージの同期
skopeo syncコマンドを使用して、記憶域の場所間でイメージを同期します。 これは、エアギャップ環境でコンテナミラーを作成して同期させる場合に便利です。
skopeo syncコマンドを使用して、あるイメージ記憶域の場所から別のイメージにイメージをコピーして、イメージを同期できます。 イメージは、指定されたトランスポートを使用してソースから宛先にコピーされます。 トランスポートは、次のいずれかのトランスポート・タイプを使用してコマンドで指定する必要があります。
-
docker: コンテナ・レジストリ。 これは、ソースまたは宛先に使用できます。 イメージ・タグが指定されていない場合は、イメージで見つかったすべてのタグがコピーされます。 -
dir: ローカル・ディレクトリ・パス。 これは、ソースまたは宛先に使用できます。 宛先とともに使用すると、コピーされるイメージごとにディレクトリが作成されます。 -
yaml: あるコンテナ・レジストリから別のコンテナ・レジストリにコピーされるイメージのリストを含むYAMLファイル。 これは、ローカル・ファイル・システムのdirトランスポートでは使用できません。
--scopedオプションでは、同じ名前の多くのイメージを宛先イメージ記憶域タイプ(レジストリまたはディレクトリ)に格納できるように、ソースの名前を接頭辞としてイメージに追加します。
ドライ・ランを実行するには、skopeo syncコマンドに--dry-runオプションを含めます。
レジストリ・イメージの同期時に使用するYAMLファイルの形式には、1つ以上のレジストリからコピーするイメージがリストされます。 たとえば:
myregistry.example.com:
images:
oraclelinux:
- "9"
- "10"
localhost:5000:
images:
myimage: []
tls-verify: false
skopeo syncコマンドおよびYAMLファイルに含めることができるオプションの詳細は、skopeo-sync(1)マニュアル・ページを参照してください。
例12-10セキュアでないレジストリからローカル・ディスクへのイメージの同期
oraclelinuxという名前のすべてのイメージをローカルの安全でないレジストリからローカル・ディレクトリにコピーします。
skopeo sync --src docker --dest dir --scoped --src-tls-verify=false localhost:5000/oraclelinux $HOME/images/
例12-11ローカル・ディスクからコンテナ・レジストリへのイメージの同期
ローカル・ディレクトリ内のすべてのイメージをレジストリにコピーします。
skopeo sync --src dir --dest docker --scoped $HOME/images/localhost:5000 myregistry.example.com:5000/
例12-12レジストリ内のイメージを安全でないプライベート・レジストリに同期する
レジストリ内のoraclelinuxという名前のすべてのイメージをローカルのプライベート・レジストリにコピーします。 --append-suffixオプションは、宛先イメージタグに接尾辞を追加します。
skopeo sync --src docker --dest docker --dest-tls-verify=false --append-suffix '-mirror' myregistry.example.com:5000/oraclelinux localhost:5000/mirror/
例12-13 YAMLファイルを使用したイメージの同期
mysync.yamlという名前のYAMLファイルにリストされているイメージを、セキュアでないプライベート・レジストリにコピーします。
skopeo sync --src yaml --dest docker --dest-tls-verify=false mysync.yaml localhost:5000/mirror/
イメージの削除
skopeo deleteコマンドを使用して、コンテナ・レジストリまたはローカル・コンテナ・ストレージからイメージを削除します。
skopeo deleteコマンドは、すべてのコンテナ・レジストリで機能しない可能性があり、多くのレジストリでは、デフォルトの構成では許可されません。
skopeo deleteコマンドの詳細は、skopeo-delete(1)マニュアル・ページを参照してください。
例12-14ローカル・ストレージからのイメージの削除
skopeo delete containers-storage:oraclelinux:9-slim
例12-15プライベート・レジストリからのイメージの削除
skopeo delete docker://myregistry.example.com/oraclelinux:9
例12-16セキュアでないプライベート・レジストリからのイメージの削除
skopeo delete --tls-verify=false docker://localhost:5000/myimage:v1