我想通过以下方式在两台不同的机器上重用 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 build
. https://github.com/docker/compose/issues/883
最佳答案
要信任不是在本地构建的拉取镜像的层,您需要 -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/
关于docker - docker 构建之间的层不能共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60603533/