使用Docker 1.12.6
我从Docker注册表中提取了一个图像。我使用docker save
命令将图像导出为tar文件。
我删除了原始图像和容器,并使用docker load -i myImage.tar
加载导出的图像。
现在,当运行docker images
时,我注意到我的图像丢失了它的存储库/标签信息:
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 5fae4d4b9e02 8 weeks ago 581.3 MB
为什么它会有这种行为,我如何保持原来的图像名称?
7条答案
按热度按时间rkttyhzu1#
使用
命令
docker save <image id>
删除存储库和标记名称。要解决这个问题,请使用
docker save <repo>:<tag>
,它将在保存的文件中保留存储库和标记名称。例如:4c8rllxm2#
我遇到了同样的问题,所以我使用以下命令手动修复它:
docker tag <Image-ID> <desired Name:Tag>
参考文献
[备注]:
这是不一致的:
docker save image-repo-name
->docker load
恢复名称,docker save SHA
->docker load
无名称或标记,docker save name:latest
->docker load
无名称或标记。和:
当前(正确)行为如下:
将所有标记的图像+父图像保存在存储库中,并创建一个列出标记的存储库文件
在仓库中保存标记的图像+父项,并创建一个列出标记的仓库文件
保存图像+父项,不创建存储库文件。保存仅与图像相关,并且标签被设计为省略,并留给用户作为练习,以根据他们自己的命名约定填充。
Reference
yptwkmov3#
这是一个变通方案
1.转到源Docker主机,使用以下命令
docker image ls > images.txt
创建包含所有图像详细信息的文本文件1.上面的命令将生成一个类似于以下
REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> 293e4ed402ba 2 weeks ago 315MB <none> <none> d8e4b0afd6ba 2 weeks ago 551MB
的文本文件1.使用
docker image tag
命令进行必要的编辑以设置标记docker image tag 293e4ed402ba postgres:latest docker image tag d8e4b0afd6ba wordpress:latest
gzjq41n44#
一个图像ID可以有多个名称/标签,因此,在将图像保存并加载到tar ball/从tar ball加载图像后,我希望会发生的是您丢失名称和标签的方式。
模式细节在关于它的讨论中here
aij0ehis5#
Docker文档:
cat exampleimage.tgz| docker import - exampleimagelocal:new
这个对我很有效。
p4rjhz4m6#
olmpazwi7#
我写了一行脚本,导入一堆.tar文件并立即标记图像。
请注意,当找到所有tar文件时,您应该在该文件夹中。