【问题标题】:do I need to manually tag "latest" when pushing to docker public repository?推送到 docker 公共存储库时是否需要手动标记“最新”?
【发布时间】:2014-12-24 23:21:45
【问题描述】:

假设我有一张图片me/mystuff:v0.0.1

如果我将它推送到存储库,我会发现:

docker push me/mystuff:v0.0.1 

latest 没有创建,并且在从另一台机器上拉取时它会抱怨,例如

ssh me@faraway
(faraway)  $ docker run -it me/mystuff /bin/bash

将导致me/mystuff:latest 出现未找到错误

我可以添加最新标签并显式推送到公共存储库:

docker login me
docker tag me/mystuff:v0.0.1 me/mystuff:latest
docker push me/mystuff:latest

然后从另一台机器:

docker pull me/mystuff

将工作,因为最新的存在。

我还发现,一旦最新版本存在,推送新编号版本时它不会自动更新。

我能否以某种方式消除手动标记最新版本并让最新版本自动指向最新编号版本的步骤?

还是出于某种原因,例如允许将开发版本(仅标记为 vN.N.N)与生产版本(标记为最新)分开?

【问题讨论】:

    标签: docker dockerhub


    【解决方案1】:

    如果没有指定,最新的只是标签的默认值。如果您推送标记的图像,它不会替换当前标记为最新的图像。

    【讨论】:

    • 是否有命令将其作为标签和最新推送?或者我需要两个命令吗?例如:docker push foo/bar:v1 docker push foo/bar
    • 注意:不带标签的推送(即:docker push foo/bar)会推送所有标有 repo foo/bar 的本地图像。如果其中一个没有标签,它可能会推送一个“最新”标签(正如@Usman 所说)。如果您的所有本地图像都被标记,则只有那些标记会被推送(可能不包括“最新”)。请注意,您可以根据this answer 在本地图像上轻松创建多个标签,例如:创建一个本地“最新”标签,然后您可以推送。
    • docker tag me/mystuff:v0.0.1 me/mystuff:latest 肯定会起作用,而且您不需要两个标签。
    • 另外,Docker 足够聪明,如果你推送两个标签,并且它们都具有相同的底层哈希,它会识别它并简单地添加第二个标签名称。
    猜你喜欢
    • 2022-12-06
    • 2018-07-13
    • 2021-12-02
    • 2018-08-02
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    相关资源
    最近更新 更多