如何使Docker中心使用相同的图像,用于"最新"和" vX.Y"?

时间:2016-06-06 05:31:18

标签: docker dockerhub

Docker Hub从Syncthing image为我构建this source repo

我标记了latest commit v0.13.5,但Docker构建了两次:once for latestonce for v0.13.5

为什么呢?难道不能确定来源是一样的吗?我只是在Dockerfile做了一些愚蠢的事情,打破了缓存?有没有什么方法我需要提示Docker Hub这应该是两个具有相同校验和但标签不同的图像?

我正在考虑两个Docker图像标记latestv0.13.5,就像两个指向同一个提交的git标记一样。 Docker Hub也不应该这样工作吗?如果有人试图提取latest,他们会提取相同的标记为v0.13.5的图片吗?我知道如何拉/重新标记/推送,但同样,似乎必须有一些方法让Docker Hub自动执行此操作。

Build settings

screenshot of meonkeys/syncthing build settings

2 个答案:

答案 0 :(得分:2)

Latest只是“没有指定特定标记/版本的最后一个构建/标记”。

如果您按下已标记的图像,则不会替换标记为最新的当前图像。如果仅推送标记图像,则不会添加latest标记。

Docker Hub上的自动构建会自动为主分支添加latest标记。

答案 1 :(得分:1)

有点神奇,Docker Hub 可以做到这一点! Pablo Chico de Guzmán helped me out

步骤:

  1. 添加名为hooks/post_push
  2. 的文件
  3. make hooks/post_push可执行,提交并推送
  4. 删除"分支"建立,但留下" Tag"建立到位
  5. 现在,我推送的所有代码(例如git push --tags)都会触发自动构建,同样的图片也会获得latest代码。

    Here's the change I had to make所以最新的" vX.Y"标记的meonkeys/syncthing图片也标记为latest

    screenshot of Docker Hub build settings for my syncthing image