如何取消Dockerfile的FROM行的缓存
我有这样一个Dockerfile:如何取消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
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命令的方法。不过,我在帖子里没有说清楚。不过你还是得到了我的支持,因为这也很有用!