gpt4 book ai didi

docker - Docker缓存困惑

转载 作者:行者123 更新时间:2023-12-02 19:41:13 24 4
gpt4 key购买 nike

我对某些docker缓存行为感到困惑。

首先,我进行docker构建,然后将镜像推送到存储库,然后在本地删除所有docker数据(我在OSX上的VM中运行docker,因此销毁并重新创建了VM)。然后,我将刚刚推送到存储库的图像拉出。

现在,我对代码进行了所有更改,例如在自述文件中添加换行符。当我运行docker build时,没有任何步骤被缓存。它从一开始就一步一步地运行所有步骤。

当然,我希望任何COPY .步骤都将无效,因为我已经更新了代码,但是即使在此之前的步骤也无效了。

为什么会这样?

更新:

这是我的输出(有点匿名)。

没有命令行参数,这是在我只运行docker build .时发生的

Step 1 : FROM 123456.dkr.ecr.us-east-1.amazonaws.com/foo:0.1.1
0.1.1: foo
d89e1bee20d9: Already exists
9e0bc8a71bde: Already exists
27aa681c95e5: Already exists
a3ed95caeb02: Already exists
1f23dc7f328b: Already exists
7c5e36b70451: Already exists
0844dd833da6: Already exists
8017b7feecce: Already exists
0dd824b407cc: Already exists
ecfa07005844: Already exists
697248412260: Already exists
df6663ccf76d: Already exists
Digest: sha256:823221727843f32d1a52879aa57e40e02f4db2b31a2344384fc0307fa85c2b52
Status: Downloaded newer image for 123456.dkr.ecr.us-east-1.amazonaws.com/foo:0.1.1
---> b6b907685beb
Step 2 : RUN curl https://example.com > /file
---> Running in 1f912826e4c8
OK

它在哪里说它为“foo”基本镜像“下载了更新的镜像”,这可能是问题所在吗?如您所见,所有层都已经存在。因此,奇怪的是它认为它下载了更新的图像,这可能与为什么不缓存以下步骤有关?

最佳答案

删除VM还会删除从终端拉出并构建的所有镜像。这包括缓存的层。这是预期的行为,因为Docker实际上并未在您的主机(OS X)中运行。 Docker Engine实际上在VM内运行,而您的Docker客户端CLI正在通过API与Engine通讯。将您的VM视为Docker服务器,将CLI视为Docker客户端。因为Docker Engine在VM中运行;删除时,VM中存储的缓存层,提取的图像以及所有其他数据将与VM一起删除。

关于docker - Docker缓存困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35517057/

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