当前位置: 首页 > 知识库问答 >
问题:

新生成命令后,删除的Docker图像再次出现

顾昊穹
2023-03-14

场景:我制作了一个工作的dockerfile,我想从头开始测试它们。然而,remove命令只是暂时删除图像,这意味着再次运行build命令将使它们重新出现,就好像它从未被删除过一样。

示例

*注意:前两张图片与此问题无关。

使用docker rmi***\u seis命令删除图像,因此,运行docker images将显示图像已删除。

但是,当我运行以下build命令时:

docker build -f dockerfile -t ***_seis:latest .

尽管它在几秒钟前被删除,但构建时间不到一分钟,创建日期表明它是在3天前制作的。

日志:

这是我的构建日志的样子:

docker build -f dockerfile -t ***_seis:latest .
[+] Building 11.3s (14/14) FINISHED                                                                                                                                                 
 => [internal] load build definition from dockerfile                                                                                                                           0.0s
 => => transferring dockerfile: 38B                                                                                                                                            0.0s
 => [internal] load .dockerignore                                                                                                                                              0.0s
 => => transferring context: 2B                                                                                                                                                0.0s
 => [internal] load metadata for docker.io/jupyter/base-notebook:latest                                                                                                       11.2s
 => [1/9] FROM docker.io/jupyter/base-notebook:latest@sha256:bc9ad73498f21ae716ba0e58d660063eae1677f6dd2bd5b669248fd0bf22dc79                                                  0.0s
 => [internal] load build context                                                                                                                                              0.0s
 => => transferring context: 32B                                                                                                                                               0.0s
 => CACHED [2/9] RUN apt update &&     apt install --no-install-recommends -y         software-properties-common         git         zip         unzip         wget         v  0.0s
 => CACHED [3/9] RUN conda install -c conda-forge jupyter_contrib_nbextensions jupyter_nbextensions_configurator jupyter-resource-usage                                        0.0s
 => CACHED [4/9] RUN mkdir /home/jovyan/environment_ymls                                                                                                                       0.0s
 => CACHED [5/9] COPY seis.yml /home/jovyan/environment_ymls/seis.yml                                                                                                      0.0s
 => CACHED [6/9] RUN conda env create -f /home/jovyan/environment_ymls/seis.yml                                                                                              0.0s
 => CACHED [7/9] RUN python -m ipykernel install --name seis--display-name "seis"                                                                                         0.0s
 => CACHED [8/9] WORKDIR /home/jovyan/***_seis                                                                                                                             0.0s
 => CACHED [9/9] RUN chown -R jovyan:users /home/jovyan                                                                                                                        0.0s
 => exporting to image                                                                                                                                                         0.0s
 => => exporting layers                                                                                                                                                        0.0s
 => => writing image sha256:16a8e90e47c0adc1c32f28e32ad17a8bc72795c3ca9fc39e792fa383793c3bdb                                                                                   0.0s
 => => naming to docker.io/library/***_seis:latest  

故障排除:到目前为止,我已经尝试了不同的方法来移除它们,例如

docker rmi <image_name>
docker image prune

并从docker桌面手动删除。

我确保使用以下方法删除所有容器:

docker ps -a

预期结果:如果成功,它应该从头开始重建,构建时间超过一分钟,并且创建日期应该反映它实际创建的时间。

问:我想知道图像没有被完全删除的问题是什么。为什么它从过去重新创建图像,而不仅仅是开始新的构建?

提前感谢您的帮助。

共有1个答案

有宏峻
2023-03-14

它是从缓存中生成的。由于生成引擎似乎没有更改任何输入,并且具有上一个生成中的步骤,因此可以重用这些步骤,包括图像创建日期。

您可以删除生成缓存。但我建议你改为跑步:

docker build --pull --no-cache -f dockerfile -t ***_seis:latest .

如果在本地拉取旧版本,则“拉”选项会拉取新的基础图像。并且--no cache选项跳过各个步骤的缓存(特别是可能获取最新外部依赖项的运行步骤)。

 类似资料:
  • 我有以下图片: 当我试图移除其中一个时,我得到: 我怎样才能移除它们?为什么会有这样的冲突?

  • 和以下内容: 获取以下错误:

  • 我正在OS X 10.8.4(Mountain Lion)下的Vagrant下运行Docker,每当我试图删除一个保存的图像时,我会得到一个错误: 根据帮助,正确的语法是,我不知道该如何解释。 如何删除图像?   有趣的是,当我运行时,根本没有容器显示。运行将显示四(4)个图像和一(1)个图像。

  • 我想删除一个本地图像标记(“存储库”/“标记”组合)。有可能吗? 我如何才能在仅与一个图像ID相关联的多个标记中删除任何一个标记而不删除其他标记?在我的情况下,我只想排除hiworld存储库。我可以删除图像,因此也可以删除与之相关联的所有标签,但这不是我想要做的。下面是输入命令docker images时显示的内容。 提前道谢。

  • 然后尝试了这个解决方案,我尝试了,但没有返回任何内容,还尝试了,显示0 GB。 我还计划在docker内安装其他程序到操作系统,因此希望从现有的子映像中产生新的子映像。我到处搜索,没有一个很好的解决方案删除一个父图像在docker和原因,我阅读是因为一些父层被使用的子图像。在docker中生成一个新的子映像后,是否没有办法删除父映像?

  • 来自守护进程的错误响应:冲突:无法删除529072250ccc(无法强制)-正在运行的容器5da200b36c1e正在使用映像 如何删除码头工人镜像? docker ps是Nothing。 容器ID映像命令创建的状态端口名称 但是我不能删除图像。我尝试过的命令 完成此操作后,图像会消失一次,但会再次出现。 或者有时图像不会消失。