2

我想通过以下方式在两台不同的机器上重用 docker 映像中的层:

  • 构建映像 (1)
  • 将图像推送到注册表 (1)
  • 从注册表中提取图像 (2)
  • 构建相同的 docker 镜像并从拉取的镜像中重用层 (2)

所以,

机器 1

我构建了以下图像:

FROM node:13-slim

COPY package.json package.json
  • 使用以下命令构建此映像:docker build . -t <registry>/test-docker-image:latest
  • 将图像推送到注册表:docker push <registry>/test-docker-image:latest

机器 2

  • 从注册表中拉取镜像:docker pull <registry>/test-docker-image:latest

如果我docker build .在这台机器上运行,则不会从拉取的图像中重用图层。

有没有办法重用拉取图像中的图层docker build

类似问题

GitHub 上有以下线程描述了类似的内容,但这描述了在 和 之间共享层之间的docker build问题docker-compose buildhttps://github.com/docker/compose/issues/883

4

1 回答 1

3

要信任非本地构建的拉取图像的层,您需要-cache-from,例如:

docker build --cache-from=<registry>/test-docker-image:latest -t newimg:latest .

默认情况下,Docker 不会信任拉取的镜像,以避免恶意镜像声称为您可能构建的镜像提供层,而实际上在该层中包含恶意内容。

有关 args to 的更多详细信息docker build,请参阅:https ://docs.docker.com/engine/reference/commandline/build/

于 2020-03-09T15:25:44.007 回答