我希望始终提取特定版本,而不仅仅是最新版本。
随机示例:https://registry.hub.docker.com/u/aespinosa/jenkins/builds_history/9511/
我这样做是因为我只想部署我已经审核过的版本。目前这可能吗?或者我被迫分叉它们并自己制作?
您可以使用以下语法通过摘要拉取特定的图像:
docker pull ubuntu@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2
如果需要查找哈希值,则在推送/拉取图像时输出。一些自动构建在最后输出它。我尝试使用
docker inspect
查找哈希值,但它似乎不存在,因此您必须删除图像并再次拉取它才能查看哈希值。
我这样做的方法是标记每个构建
docker build -t $NAMESPACE/$APP_NAME:$BUILD_SHA1 .
docker tag \
$NAMESPACE/$APP_NAME:$SHA1 \
$DOCKER_REGISTRY/$NAMESPACE/$APP_NAME:$SHA1
docker push $DOCKER_REGISTRY/$NAMESPACE/$APP_NAME:$SHA1
然后拉出特定标签
docker pull $DOCKER_REGISTRY/$NAMESPACE/$APP_NAME:$SHA1
除了 Joel 的回答之外,您可能还想在尝试拉取映像之前验证特定 Docker 存储库上是否存在该映像。我知道的最简单的方法是使用 Docker 注册表 API。发出简单的 HTTP GET 请求。像这样组装字符串 -
FullURL = DomainAndPort + "/v2/" + imageName + "/blobs/sha256:" + imageHash;
在我们的网络存储库上对我有用的示例请求 -
http://10.10.9.84:5000/v2/hello-world/blobs/sha256:8089101ead9ce9b8c68d6859995c98108e1022c23beaa55754acb89d66fd3381
将该字符串输入 Chrome 浏览器会返回描述图像的 JSON 对象。如果您输入无效的 sha256 哈希值,API 将返回 -
{"errors":[{"code":"DIGEST_INVALID","message":"provided digest did not match uploaded content","detail":{}}]}
有关更多详细信息,请参阅 https://docs.docker.com/registry/spec/api/
中的“拉层”