COPY --link是一个新的BuildKit功能,可以大大加速您的 Docker 镜像构建。它通过将文件复制到不依赖于其前身存在的独立图像层中来工作。您可以在系统上不存在基本图像的情况下向图像添加新内容。
此功能于 2022 年 3 月作为Buildx v0.8的一部分添加。它包含在 Docker CLI 版本 20.10.14中,因此如果您正在运行最新版本,您应该已经可以访问。
在本文中,我们将展示它的–link作用并解释它是如何工作的。我们还将研究一些不应该使用它的情况。
什么是“–链接”?
link是现有 DockerfileCOPY指令的新可选参数。它通过在您每次使用它时创建一个新的快照层来改变副本的工作方式。
常规COPY语句将文件添加到 Dockerfile 中它们之前的层。该层的内容需要存在于您的磁盘上,以便新内容可以合并到:
FROM alpine
COPY my-file /my-file
COPY another-file /another-file
上面的 Dockerfile 复制my-file到上一个命令生成的层中。指令后FROM,图像由 Alpine 的内容组成:
bin/
dev/
etc/
...
第一COPY条指令生成一个图像,其中包括来自 Alpine 的所有内容以及my-file文件: