gpt4 book ai didi

docker - 如何破坏Dockerfile的FROM行的缓存

转载 作者:行者123 更新时间:2023-12-02 18:53:09 24 4
gpt4 key购买 nike

我有一个像这样的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的最新版本。

最佳答案

如果我正确理解了上下文,则可以在使用--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
问题-https://github.com/moby/moby/issues/4238

关于docker - 如何破坏Dockerfile的FROM行的缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51869275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com