首页 > 解决方案 > docker/docker-compose build --pull 行为

问题描述

我试图找出docker build --pull/docker-compose build --pull选项的工作原理。我找到了一个链接 - https://docs.docker.com/compose/reference/build/ 它说的是 -

始终尝试拉取更新版本的映像。

但我还有一些问题没有得到解答——

例如考虑这张图片 -mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim

当我使用--pull国旗时,

  1. 如果可用,它会拉取 aspnetcore 3.1 版本吗?
  2. 如果可用,它会拉动夜间构建吗?
  3. 无论本地图像和最新图像是否相同,它是否总是下载图像?
  4. 如果机器在运行时没有互联网连接会发生什么docker build --pull

标签: dockerdocker-composedocker-machine

解决方案


  1. 如果可用,它会拉取 aspnetcore 3.1 版本吗?

不,因为它不会被标记:3.0-buster-slim

  1. 如果可用,它会拉动夜间构建吗?

不,因为它不会被标记:3.0-buster-slim

  1. 无论本地图像和最新图像是否相同,它是否总是下载图像?

不会。如果本地和远程 sha256 哈希值不同,它将下载更新。如果它们相同,则不会重新下载。毫无意义。

让我们用一个简单的单行 Dockerfile 来测试一下:

FROM alpine:latest

第一次:

$ docker build --pull .
...
latest: Pulling from library/alpine
Digest: sha256:72c42ed48c3a2db31b7dafe17d275b634664a708d901ec9fd57b1529280f01fb
Status: Downloaded newer image for alpine:latest

后续构建:

$ docker build --pull .
...
latest: Pulling from library/alpine
Digest: sha256:72c42ed48c3a2db31b7dafe17d275b634664a708d901ec9fd57b1529280f01fb
Status: Image is up to date for alpine:latest
  1. 如果机器在运行时没有互联网连接会发生什么docker build --pull

构建失败。在禁用网络的情况下,--pull失败:

$ docker build --pull .
Sending build context to Docker daemon  2.048kB
Step 1/1 : FROM alpine:latest
Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 127.0.0.53:53: server misbehaving                           

没有--pull它的工作:

$ docker build .
Sending build context to Docker daemon  2.048kB
Step 1/1 : FROM ubuntu:latest
 ---> a2a15febcdf3
Successfully built a2a15febcdf3

推荐阅读