带有日期的 Docker 标记在 Gitlab 中不再起作用

Posted

技术标签:

【中文标题】带有日期的 Docker 标记在 Gitlab 中不再起作用【英文标题】:Docker tag with date no longer functions in Gitlab 【发布时间】:2021-03-24 14:31:39 【问题描述】:

以前,我已经成功地标记了我的最新图像并将它们推送到 Gitlab 容器注册表几个月,没有任何问题。但是,从昨天开始,我就注意到 Gitlab 不再设法将我的图像推送到它的容器存储库。这是堆栈跟踪:

[info] Built image project with tags [0.1-SNAPSHOT, latest]
[success] Total time: 285 s (04:45), completed Dec 13, 2020, 8:56:34 PM
$ docker tag project:latest registry.gitlab.com/group/project:0.1-SNAPSHOT-$(date +%Y-%m-%d-%H-%M-%S)
$ docker push registry.gitlab.com/group/project
Using default tag: latest
The push refers to repository [registry.gitlab.com/group/project]
tag does not exist: registry.gitlab.com/group/project:latest

我可以通过这样标记图像来推送图像,但这不是我想要的,因为我想区分我的图像。

    - sbt docker:publishLocal
    - docker tag project:latest registry.gitlab.com/group/project
    - docker push registry.gitlab.com/group/project

我的 gitlab.yml 文件没有任何更改,我不明白为什么它突然开始失败。任何帮助或指针表示赞赏。

【问题讨论】:

你在 CI 上使用了什么图像?我怀疑 update in Docker image 破坏了推送。 为了记录,正好打这个:github.com/moby/moby/pull/40302 所以基本上默认的 docker CLI 行为从“推送所有标签”更改为“推送最新的tag”(当未指定标签时) 【参考方案1】:

我实际上是通过更改脚本来推送特定标签而不是最新的来解决它。

  script:
    - sbt docker:publishLocal
    - docker tag project:latest registry.gitlab.com/group/project:0.1-SNAPSHOT-$(date +%Y-%m-%d-%H-%M)
    - docker push registry.gitlab.com/group/project:0.1-SNAPSHOT-$(date +%Y-%m-%d-%H-%M)

【讨论】:

【参考方案2】:

我遇到了同样的问题,docker push 在周五和今天停止工作。

我使用以前的 Docker 镜像解决了这个问题:

 push:
     tags:
       - dind
     stage: push
-     image: docker:latest
+     image: docker:19.03.13
     services:
         - docker:dind
     variables:
         DOCKER_DRIVER: overlay

对应最近在Docker Hub上发布的20.10稳定版:https://hub.docker.com/_/docker?tab=tags&page=1&ordering=last_updated&name=20.10

【讨论】:

以上是关于带有日期的 Docker 标记在 Gitlab 中不再起作用的主要内容,如果未能解决你的问题,请参考以下文章

在带有 Docker 桌面的 GitLab CI 管道上使用适用于 Windows 的 Gitlab-Runner

带有外部 nginx 和综合的 gitlab docker 注册表

在 Gitlab-ci 中使用带有 docker-compose 的 Testcontainers 运行端到端测试

带有docker的Gitlab runner不会在本地缓存rails gem

带有 nginx 容器的 Docker Gitlab 容器

带有 Docker 和 shell 错误的 Gitlab Runner — 权限被拒绝