Docker保存/加载丢失原始图像存储库/名称/标记

Docker保存/加载丢失原始图像存储库/名称/标记,docker,docker-image,Docker,Docker Image,我用的是Docker 1.12.6 我从Docker注册表中提取了一个图像。 我使用docker save命令将图像导出为tar文件 我删除了原始图像和容器,并使用docker load-I myImage.tar加载了导出的图像 现在,当运行docker images时,我注意到我的图像丢失了其存储库/标记信息: REPOSITORY TAG IMAGE ID CREATED SIZE &l

我用的是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
创建的存储库标记图像ID大小
5FAE44B9E02 8周前58130万

它为什么会有这种行为?如何保留原始图像名称?

一个图像ID可以有多个名称/标记, 所以你松开名字和标签的方式是 保存图像并将其加载到焦油球/从焦油球加载图像后,我希望发生的事情


模式详细信息在关于它的讨论中

我也遇到了同样的问题,因此我使用以下命令手动修复它:

docker标签


[注意]:

不一致:
docker保存图像回购名称
->
docker加载
恢复名称,
docker save SHA
->
docker load
无名称或标记,
docker保存名称:最新
->
docker加载
无名称或标记

当前(和正确)行为如下所示:

docker save repo
在repo中保存所有标记的图像+父对象,并创建 列出标记的存储库文件

docker save repo:tag
在repo中保存标记图像+父对象,并创建存储库文件 列出标签

docker save imageid
保存图像+父对象,不创建存储库文件。拯救 仅与图像相关,标签由设计省略,保留为 用户根据自己的命名进行填充的练习 惯例

使用


来自docker文档:

cat exampleimage.tgz | docker导入-exampleimagelocal:new

root@mymachine:/tmp# cat myimage.tar | docker import --message "New image imported from tarball" - reponame:my-image-name
sha256:be0794427222dcb81182a59c4664b350ecb5ffb7b37928d52d72b31
root@mymachine:/tmp# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
reponame          my-image-name    be0794427222        6 seconds ago       4.31GB
这一个对我有用。

这是一个解决办法

  • 转到源docker主机,使用以下命令创建包含所有图像详细信息的文本文件
    docker image ls>images.txt

  • 上述命令将生成一个类似于以下内容的文本文件
    两周前创建的存储库标记图像ID大小为293e4ed402ba 315MB d8e4b0afd6ba两周前551MB

  • 使用
    docker image tag
    命令进行必要的编辑以设置标记

  • docker图像标签293e4ed402ba postgres:latest
    
    docker image tag d8e4b0afd6ba wordpress:latest

    小心使用
    docker import
    它从一个tarball创建一个图像,而tarball甚至不是一个图像(只是一个要作为图像导入的文件系统)!可能有很多副作用。有关更多信息,请参阅中的讨论
    docker save -o ubutu-18.04.tar ubuntu:18.04
    
    root@mymachine:/tmp# cat myimage.tar | docker import --message "New image imported from tarball" - reponame:my-image-name
    sha256:be0794427222dcb81182a59c4664b350ecb5ffb7b37928d52d72b31
    root@mymachine:/tmp# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    reponame          my-image-name    be0794427222        6 seconds ago       4.31GB