首页 > 解决方案 > 容器镜像名称未从镜像本身转移

问题描述

我运行docker build带有-t参数的命令,以便用相应的名称标记图像。

当我这样做时docker image ls,我可以看到相应的图像和我与参数一起使用的名称-t。尽管如此,当我从该映像运行容器时,该docker ps命令会显示新容器,但该IMAGE列未显示我为创建此容器的映像设置的名称。它显示 IMAGE ID 值而不是 IMAGE 名称,例如8a135cfa3821

我正在使用 Pycharm 2018.1 运行 docker 容器。通过命令行运行这个镜像的容器,它工作得非常好。

下图显示了docker ps -adocker image ls命令输出的相关列:

输出

标签: dockerpycharm

解决方案


我知道 docker 会将图像名称取消引用到docker ps输出中的 ID 的两个原因:

  1. 您使用图像 id 而不是图像名称来启动容器。这可以由您用来启动容器的工具自动完成。您可以有多个引用指向同一个 ID,因此没有通用的方法可以从图像 ID 向后查找用于启动容器的原始图像名称。

  2. 您用于启动容器的图像引用现在指向不同的 ID。如果您删除标签、更改标签的目的地或拉取新版本的图像,就会发生这种情况。容器基于镜像 ID 运行,因此即使你拉取不同的镜像,它们也会继续按原样运行,并且镜像 ID 本身是不可变的,只要你有容器使用它就不能删除。


推荐阅读