Docker内部版本之间的层无法共享

时间:2020-03-09 15:18:58

标签: docker docker-layer

我想通过以下方式在两台不同的计算机上重用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 builddocker-compose build之间共享层之间的问题。 https://github.com/docker/compose/issues/883

1 个答案:

答案 0 :(得分:0)

要信任不是本地构建的提取图像的各层,您需要-cache-from,例如:

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

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

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