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)
マニュアル・ページを参照してください。