docker - docker 构建之间的层不能共享

标签 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 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/

相关文章:

docker-compose volume 为空

docker - 告诉Docker构建忽略RUN命令顺序的更改

docker - 层数是否会影响当前和 future docker 镜像的大小、设置时间或性能?

postgresql - 创建高可用且高可用的数据库

node.js - 在 Docker : Libpq dependency Exec format error 中将 sequelize 与 Postgresql 一起使用

r - 树莓派上的 Selenium/standalone-firefox docker 无法工作 : how to use RSelenium on a raspberryPi

docker - Docker图像层验证

docker - Dockerfile 中的每一行都会创建一个新层吗?

node.js - 使用暂存Docker镜像运行NodeJs二进制文件