了解"docker-compose pull"的输出



当我为具有大量服务的项目运行docker-compose pull时,我看到如下输出:

...
Pulling service1     ... downloading (64.0%)
Pulling service2     ... downloading (79.3%)
Pulling service3     ... downloading (64.0%)  
...

这些数字似乎在上升和下降,有时它们同时针对多个服务进行更新。这个输出是什么意思,如何理解docker-compose pull的实际进度?

它检索在 docker-compose 文件的服务中指定的各种 docker 映像。 如果可以的话,它将为每个服务并行拉取多个层,因此您可以看到每个服务的不同进度。

大多数撰写文件中都有多个服务。 通常,这些服务不是从本地 Dockerfile 构建的,而是引用远程存储库中的映像。 每个服务都由多个图像图层组成。

默认情况下,docker-compose pull将并行更新所有服务(有关更多信息,请参阅官方文档(。 该百分比适用于该服务中正在下载和更新的特定图层。 由于图像可以具有许多不同大小的图层,因此使用此命令时,此数字可能会波动。

实际上,我的经验是docker-compose无法正确处理docker层。

如果你运行 docker inspect 你会得到一个"层"列表,当你执行 docker-compose pull 时,它会分别获取每个层。

如果运行:

docker pull ubuntu:latest

你会得到这样的输出:

latest: Pulling from library/ubuntu
a4a2a29f9ba4: Pull complete
127c9761dcba: Pull complete
d13bf203e905: Pull complete
4039240d2e0b: Pull complete
Digest: sha256:35c4a2c15539c6c1e4e5fa4e554dac323ad0107d8eb5c582d6ff386b383b7dce
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

您会注意到有 4 个层被拉取、下载和提取。

当我运行 docker-compose pull 时,假设它需要再次拉取所有 4 层,% 状态就会变得混乱,因为它向您显示特定层的状态,一旦完成,它就会向您显示下一个要下载的状态。

即。

码头工人:

layer1: 50%
layer2: 70%      

码头工人撰写输出:50%

一旦码头工人状态为:

layer1: 100%
layer2: 80%  

docker-compose输出:80%(即I从100%下降到80%,因为还有另一层正在下载(

话虽如此,这是一个糟糕的用户模式并且令人困惑,但我相信这就是引擎盖下发生的事情。 如果我错了,一个实际的 docker-compose 开发人员可以纠正我。

最新更新