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

sel*_*ter 3 docker dockerfile

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

例子:

这就是我的终端的样子: 在此输入图像描述

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

***_seis使用命令删除镜像,docker rmi ***_seis结果运行docker images会显示***_seis镜像已被删除。

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

docker build -f dockerfile -t ***_seis:latest .
Run Code Online (Sandbox Code Playgroud)

它将成功构建,但给出以下结果: 在此输入图像描述

尽管它在几秒钟前被删除,但构建只花了不到一分钟,并且创建日期表明它是 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  

Run Code Online (Sandbox Code Playgroud)

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

docker rmi <image_name>
docker image prune
Run Code Online (Sandbox Code Playgroud)

并手动从 docker 桌面删除。

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

docker ps -a
Run Code Online (Sandbox Code Playgroud)

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

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

预先感谢您的帮助。

BMi*_*tch 5

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

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

docker build --pull --no-cache -f dockerfile -t ***_seis:latest .
Run Code Online (Sandbox Code Playgroud)

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