なぜか忘れましたがDocker Registry APIをいじります
今回はDockerHubから grafana/grafana:latest のイメージ情報を取得してみます。
とりあえずAPIには認証がかかっておりtokenが必要ですのでまずはtokenを取得します。
取得したtokenはtokenという変数にセットします。
ちなみにshellはfish shellです。
set token (curl -s "https://auth.docker.io/token?service=registry.docker.io&scope=repository:grafana/grafana:pull" | jq -r '.token')
次にmanifestのリストを取得します。
manifestのリストはDocker Registryにはイメージが各アーキテクチャ毎に登録されているので、そのリストになります。
tokenの値はAuthorizationヘッダーに"Bearer <token>"という形で設定します。
curl -sSL -H "Accept: application/vnd.docker.distribution.manifest.list.v2+json" -H "Authorization: Bearer $token" "https://registry-1.docker.io/v2/grafana/grafana/manifests/latest" | jq . 677ms 土 4/13 23:22:59 2024
{
"schemaVersion": 2,
"mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
"manifests": [
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 2416,
"digest": "sha256:3aa2a03d88ad9628485f78e89adcd5b18bcde1aced3e6146bbbd7a718b82b797",
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 2411,
"digest": "sha256:173b46f35cdbcb4b137868a5488be265eb0bb8487d959bb970e62171225f202f",
"platform": {
"architecture": "arm64",
"os": "linux"
}
},
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 2411,
"digest": "sha256:06c16204fb61a9623d0a3910d0ca7933d751858b36ce0bc9676e507c9f9e3fec",
"platform": {
"architecture": "arm",
"os": "linux",
"variant": "v7"
}
}
]
}
次にアーキテクチャ別のmanifestを取得します。
今回はMacを利用しているということでarm64のイメージのmanifestを取得してみます。
digestの値を指定します。
curl -sSL -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -H "Authorization: Bearer $token" "https://registry-1.docker.io/v2/grafana/grafana/manifests/sha256:173b46f35cdbcb4b137868a5488be265eb0bb8487d959bb970e62171225f202f" | jq . 599ms 日 4/14 03:39:48 2024
{
"schemaVersion": 2,
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"config": {
"mediaType": "application/vnd.docker.container.image.v1+json",
"size": 7159,
"digest": "sha256:46becd7c39d0d018028287aa36463a747e4b1149abddeb494e66454849f67376"
},
"layers": [
{
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 3347715,
"digest": "sha256:bca4290a96390d7a6fc6f2f9929370d06f8dfcacba591c76e3d5c5044e7f420c"
},
{
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 140,
"digest": "sha256:0b9a5f2b0f5d5270e3efb34422e3a485380df63bc44f805762a8278aae8a22d8"
},
{
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 3264743,
"digest": "sha256:fcc6842772413979645ab1a68f5a281b53f5c1b7957d8c2afbec10d0eae3e467"
},
{
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 92,
"digest": "sha256:e1ca30b94fb8c90a259a124eedd07ee51865707386ca6572d443e07b38a30966"
},
{
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 47122,
"digest": "sha256:c9b151a9c147058dd576609bea6d5ab3e6a8e956ce510e64a6cc01fbee849eea"
},
{
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 23287,
"digest": "sha256:0b708c20c8dfe23bb6c3a4cab29597599ccb1a0da3722d379a6c33f614c97f0d"
},
{
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 54154543,
"digest": "sha256:d81743f85f1a571db9633f3972d118d2648dffe75d2958936c961e6fa66d6670"
},
{
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 50166186,
"digest": "sha256:21c7139cb50e2c66ca3e2bf9ab5f8288a49d4faaebf7dbdaf28463f210ae24bd"
},
{
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 11936,
"digest": "sha256:a049ab0dfb1f13f3fe22786ef0dcac844db1c55ef440e0007d8664b32176da1b"
},
{
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 1226,
"digest": "sha256:43862b0c980ecbfe03f1033b43f01f80e3f9396de639e141b8a56d03a492b6ff"
}
]
}
コメントする