我将我的docker镜像推送到我的私人注册表一次,但是当我想再次推送该图像时,我收到了这些消息:
06-Sep-2016 10:54:10 Error response from daemon: Conflict: Tag latest is already set to image 2bcc77ac3ef5f5ce0442d9cae3652c0464b8f266db9ccd65b1638aadf60ebc39, if you want to replace it, please use -f option
The push refers to a repository [localhost.com:5000/proj/proj1] (len: 1)
06-Sep-2016 10:54:10 2bcc77ac3ef5: Image already exists
06-Sep-2016 10:54:10 2bcc77ac3ef5: Image already exists
06-Sep-2016 10:54:10 4f3b96c826b8: Image already exists
06-Sep-2016 10:54:11 84c030e02a98: Image already exists
06-Sep-2016 10:54:11 c7282372eb99: Image already exists
06-Sep-2016 10:54:11 1b449d63ca4e: Image already exists
我每次都运行这些命令来在注册表中更新我的图像:
docker tag proj1 localhost.com:5000/proj/proj1
docker push localhost.com:5000/proj/proj1
答案 0 :(得分:6)
简短:升级到最新的泊坞窗版本(首选)或使用-t
代码选项。
您的命令与发出以下两个命令的命令相同:
docker tag proj1:latest localhost.com:5000/proj/proj1:latest
docker push localhost.com:5000/proj/proj1:latest
旧版本的Docker抱怨,因为您尝试使用现有标记:latest
覆盖现有图像。
快速和肮脏的解决方案是尝试
docker tag -f proj1 localhost.com:5000/proj/proj1
docker push -f localhost.com:5000/proj/proj1
这将允许覆盖旧版本Docker上的现有图像localhost.com:5000/proj/proj1:latest
。
但是,我建议将docker升级到版本> = 1.12.0。在那里,-t选项不再可用,不再需要,因为图像将始终被替换。这就是为什么official documentation上没有描述-f
选项的原因,而是在Docker Deprecated Engine Features page上提及。
答案 1 :(得分:2)
问题在于你的docker tag
命令,得到了这个回复:
来自守护程序的错误响应:冲突:标记最新已设置为图像2bcc77ac3ef5f5ce0442d9cae3652c0464b8f266db9ccd65b1638aadf60ebc39,如果要替换它,请使用-f选项
这是因为本地计算机上已有一个带有该标记的图像。如果要从旧映像中删除标记,则应使用docker rmi
命令。请务必确保较旧的图片仍然包含一个或多个标记(例如,使用内置版本号),否则实际上会将其删除。
要完成示例,请假设您的本地计算机具有以下图像:
REPOSITORY TAG IMAGE ID
localhost.com:5000/proj/proj1 0.1 2bcc77ac3ef5
localhost.com:5000/proj/proj1 latest 2bcc77ac3ef5
<none> <none> d52cb651fb7a
请注意,前两行是同一图像的两个不同标记;第三行是您想要标记的新图像。
您要做的第一件事就是从现有图片中删除最新标记,只留下 0.1 标记:
docker rmi localhost.com:5000/proj/proj1:latest
这将为您留下以下图片列表:
REPOSITORY TAG IMAGE ID
localhost.com:5000/proj/proj1 0.1 2bcc77ac3ef5
<none> <none> d52cb651fb7a
您现在可以将版本标记和最新标记应用于新图像:
docker tag d52cb651fb7a localhost.com:5000/proj/proj1:0.2
docker tag d52cb651fb7a localhost.com:5000/proj/proj1:latest
这将为您提供以下图像列表:
REPOSITORY TAG IMAGE ID
localhost.com:5000/proj/proj1 0.1 2bcc77ac3ef5
localhost.com:5000/proj/proj1 0.2 d52cb651fb7a
localhost.com:5000/proj/proj1 latest d52cb651fb7a
现在你可以做推动:
docker push localhost.com:5000/proj/proj1:latest