有没有一种方法可以对存在于Docker hub上且尚未在本地拉取的镜像进行docker inspect
?
当涉及到Docker Hub时,Docker CLI的使用使我有些困惑。我可以进行docker login
,但是此登录不能用于执行除了拉取或推送以外的任何远程操作。
有没有一种方法可以对存在于Docker hub上且尚未在本地拉取的镜像进行docker inspect
?
当涉及到Docker Hub时,Docker CLI的使用使我有些困惑。我可以进行docker login
,但是此登录不能用于执行除了拉取或推送以外的任何远程操作。
docker inspect
中看到的所有字段。#!/bin/sh
ref="${1:-library/ubuntu:latest}"
repo="${ref%:*}"
tag="${ref##*:}"
token=$(curl -s "https://auth.docker.io/token?service=registry.docker.io&scope=repository:${repo}:pull"
\
| jq -r '.token')
digest=$(curl -H "Accept: application/vnd.docker.distribution.manifest.v2+json" \
-H "Authorization: Bearer $token" \
-s "https://registry-1.docker.io/v2/${repo}/manifests/${tag}" \
| jq -r .config.digest)
curl -H "Accept: application/vnd.docker.container.image.v1+json" \
-H "Authorization: Bearer $token" \
-s -L "https://registry-1.docker.io/v2/${repo}/blobs/${digest}" | jq .
有多种工具可以为您执行所有这些API调用。我能想到的是:
作为regclient的作者,我有点偏见。结果命令看起来像:
$ regctl image inspect localhost:5000/library/alpine:latest
{
"created": "2021-08-27T17:19:45.758611523Z",
"architecture": "amd64",
"os": "linux",
"config": {
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/sh"
]
},
"rootfs": {
"type": "layers",
"diff_ids": [
"sha256:e2eb06d8af8218cfec8210147357a68b7e13f7c485b991c288c2d01dc228bb68"
]
},
"history": [
{
"created": "2021-08-27T17:19:45.553092363Z",
"created_by": "/bin/sh -c #(nop) ADD file:aad4290d27580cc1a094ffaf98c3ca2fc5d699fe695dfb8e6e9fac20f1129450 in / "
},
{
"created": "2021-08-27T17:19:45.758611523Z",
"created_by": "/bin/sh -c #(nop) CMD [\"/bin/sh\"]",
"empty_layer": true
}
]
}