27

我想总是拉一个特定的版本,而不仅仅是最新的。

一个随机的例子:https ://registry.hub.docker.com/u/aespinosa/jenkins/builds_history/9511/

我这样做是因为我只想部署我审核过的版本。这目前可能吗?还是我被迫分叉并自己制作?

4

3 回答 3

45

您可以使用以下语法通过摘要提取特定图像:

docker pull ubuntu@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2

如果需要查找哈希,则在推/拉图像时输出。一些自动构建在最后输出它。我尝试查找散列,docker inspect但它似乎不存在,因此您必须删除图像并再次拉取它以查看散列。

于 2016-11-21T22:41:07.490 回答
4

我这样做的方式是标记每个构建

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
于 2014-08-22T18:40:11.813 回答
0

除了 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/中的“拉层”

于 2021-07-21T17:20:38.470 回答