无法共享 docker 个构建之间的图层
Layers between docker builds can't be shared
我想通过以下方式在两台不同的机器上重用 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 图像中的图层:
- 构建镜像 (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/