场景:
我做了一个工作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)
预期结果:如果成功,它应该从头开始重建,构建时间超过一分钟,并且创建日期应该反映它实际创建的时间。
问题: 我想知道图像没有被完全删除是什么问题。为什么它要重新创建过去的图像而不是开始新的构建?
预先感谢您的帮助。
它是从缓存构建的。由于构建引擎的输入似乎没有发生更改,并且它具有先前构建的步骤,因此它们会被重用,包括图像创建日期。
您可以删除构建缓存。但我建议改为运行:
docker build --pull --no-cache -f dockerfile -t ***_seis:latest .
Run Code Online (Sandbox Code Playgroud)
如果您在本地拉取了旧版本,则该--pull
选项会拉取新的基础映像。该--no-cache
选项会跳过各个步骤的缓存(特别是可能获取最新外部依赖项的 RUN 步骤)。
归档时间: |
|
查看次数: |
1030 次 |
最近记录: |