如何取消Dockerfile的FROM行的缓存

如何取消Dockerfile的FROM行的缓存,docker,dockerfile,Docker,Dockerfile,我有这样一个Dockerfile: FROM python:2.7 RUN echo "Hello World" 当我第一次使用docker build-f Dockerfile-t test.构建它时,或者使用--no cache选项构建它时,我得到以下输出: Sending build context to Docker daemon 40.66MB Step 1/2 : FROM python:2.7 ---> 6c76e39e7cfe Step 2/2 : RUN echo

我有这样一个Dockerfile:

FROM python:2.7

RUN echo "Hello World"
当我第一次使用
docker build-f Dockerfile-t test.
构建它时,或者使用
--no cache
选项构建它时,我得到以下输出:

Sending build context to Docker daemon  40.66MB
Step 1/2 : FROM python:2.7
 ---> 6c76e39e7cfe
Step 2/2 : RUN echo "Hello World"
 ---> Running in 5b5b88e5ebce
Hello World
Removing intermediate container 5b5b88e5ebce
 ---> a23687d914c2
Successfully built a23687d914c2
我的echo命令执行

如果我在不破坏缓存的情况下再次运行它,我会得到以下结果:

Sending build context to Docker daemon  40.66MB
Step 1/2 : FROM python:2.7
 ---> 6c76e39e7cfe
Step 2/2 : RUN echo "Hello World"
 ---> Using cache
 ---> a23687d914c2
Successfully built a23687d914c2
Successfully tagged test-requirements:latest
缓存用于步骤2/2,并且不会执行
Hello World
。我可以使用
--无缓存
再次执行它。但是,每次,即使我使用
--no cache
时,它也会使用缓存的
python:2.7
基本映像(尽管与缓存
echo
命令不同,它不会说
-->使用缓存


如何从python:2.7
行中取出
缓存?我知道我可以从python:latest
中执行
,但这似乎也只是缓存您第一次构建docker文件时的最新版本。

如果我正确理解了上下文,您可以在使用
docker build
获取最新基本映像时使用
--pull

$docker build-f Dockerfile.test-t test--拉动

因此,使用
--no cache
--pull
将使用Dockerfile创建一个绝对新鲜的映像-

$docker build-f Dockerfile.test-t test--拉-无缓存


问题-

FROM
从注册表中提取图像(本例中为DockerHub)

拉取图像生成构建后,如果运行
docker images
,您将看到它


您可以通过运行docker rmi python:2.7来删除它

--pull
正是我想要的!非常感谢。谢谢你的建议。我对这个方法很熟悉,但我一直在寻找一个涉及修改dockerfile或docker build命令的方法。不过,我在帖子里没有说清楚。不过你还是得到了我的支持,因为这也很有用!