docker - 删除 Docker 镜像再次出现在新的构建命令中

标签 docker dockerfile

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

示例:

这是我的终端的样子: enter image description here

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

使用 docker rmi ***_seis 命令删除了 ***_seis 图像,因此,运行 docker images 将显示 ***_seis 图像已被删除。

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

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

它将成功构建,但会给出以下结果: enter image description here

即使它在几秒钟前被删除,构建只用了不到一分钟,创建日期表明它是 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

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

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

预先感谢您的帮助。

最佳答案

它是从缓存中构建的。由于构建引擎的输入似乎没有发生变化,并且它具有之前构建的步骤,因此它们被重复使用,包括图像创建日期。

您可以删除构建缓存。但我建议改为运行:

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

--pull 选项可以拉取一个新的基础镜像,如果你在本地拉取了一个旧版本的话。 --no-cache 选项跳过各个步骤的缓存(特别是可能获取最新外部依赖项的 RUN 步骤)。

关于docker - 删除 Docker 镜像再次出现在新的构建命令中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72988235/

相关文章:

docker - Azure管道从错误的Dockerfile构建镜像

node.js - 如何创建我的 nginx.conf

docker - 如何在 Docker 上编写自己的应用程序?

maven - 如何使用 jib 正确 dockerize maven 项目

reactjs - 在使用 docker 的 create-react-app 生产中使用不同 API URL 的最佳方法是什么?

Docker 镜像未与 https 和 tomcat 一起运行

php - ProxyPassMatch 与 fcgi 的平衡器不工作

docker - 我们如何设置docker容器在重启和失败时重启?

docker - 使用代理docker从Jenkins管道部署/运行应用

ruby-on-rails - 如何使用 env 文件构建 Docker