我有一个像这样的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
重新执行它。但是,每次即使使用--no-cache
时,它也会使用已缓存的python:2.7
基本映像(尽管与echo
命令被缓存时不同,它不会说---> Using cache
)。
如何破坏FROM python:2.7
行的缓存?我知道我可以做FROM python:latest
,但是这似乎也可以缓存您第一次构建Dockerfile时的最新版本。
答案 0 :(得分:1)
如果我正确理解了上下文,则可以在使用--pull
的同时使用docker build
来获取最新的基本图像-
$ docker build -f Dockerfile.test -t test . --pull
因此,同时使用--no-cache
和--pull
将使用Dockerfile创建绝对新鲜的映像-
$ docker build -f Dockerfile.test -t test . --pull --no-cache
答案 1 :(得分:1)
FROM
从注册表(在本例中为DockerHub)中提取图像。
将图像拉出以生成构建后,如果运行docker images
,您将看到它。
您可以通过运行docker rmi python:2.7
将其删除。