拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 Dockerfile中COPY和ADD之间的区别

Dockerfile中COPY和ADD之间的区别

白鹭 - 2021-11-24 360 0 0

1.简介

创建Dockerfile时,通常需要将文件从主机系统传输到Docker映像中。这些可能是属性文件,本机库或我们的应用程序在运行时需要的其他静态内容。

Dockerfile规范提供了两种将文件从源系统复制到映像的方法COPYADD指令。

在本文中,我们将研究它们之间的区别以及何时使用它们之间的区别。

2. COPYADD之间的区别

乍一看, COPYADD指令看起来相同。它们具有相同的语法:

COPY <source> <destination>

 ADD <source> <destination>

两者都将文件从主机系统复制到Docker映像。

那有什么区别呢?简而言之, ADD指令比COPY更有能力。

尽管功能上相似,但ADD指令在两种方面更强大:

  • 它可以处理远程URL
  • 它可以自动提取tar文件

让我们更仔细地研究这些。

首先, ADD指令可以接受远程URL作为其source参数。另一方面, COPY指令只能接受本地文件。

请注意,使用ADD来获取远程文件并进行复制通常并不理想。这是因为该文件将增加整个Docker映像的大小。相反,我们应该使用curlwget来获取远程文件,并在不再需要它们时将其删除。

其次, ADD指令将自动将tar文件扩展到映像文件系统中。尽管这可以减少构建映像所需的Dockerfile步骤数量,但并非在所有情况下都需要这样做。

请注意,仅当源文件在主机系统本地时才发生自动扩展。

3.何时使用ADDCOPY

根据Dockerfile最佳实践指南除非特别需要ADD的两个附加功能之一,否则我们始终应首选COPY不是ADD

如上所述,使用ADD将远程文件复制到Docker映像中会创建一个额外的层并增加文件大小。如果我们改用wgetcurl ,则可以在以后删除文件,它们不会成为Docker映像的永久部分。

此外,由于ADD命令会自动扩展tar文件和某些压缩格式,因此可能导致意外的文件被写入映像中的文件系统。

4。结论

在本快速教程中,我们已经看到了将文件复制到Docker映像中的两种主要方法: ADDCOPY 。尽管功能上相似,但大多数情况下首选COPY指令。这是因为ADD指令提供了应谨慎使用且仅在需要时使用的其他功能。

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *