带有日期的 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 运行端到端测试