dockerfile 指令 ADD 和 COPY 的区别

 

Dockerfile 中的 ADD 和 COPY 指令都用于将文件或目录从构建上下文复制到 Docker 镜像中,但它们之间存在一些关键差异:

 

基本复制功能:

  COPY: 纯粹地将从构建上下文(即执行 docker build 命令时指定的目录及其子目录)中的文件或目录复制到镜像中指定的路径。

  ADD: 除了具备 COPY 的基本复制功能外,还提供了额外的功能。

  

ADD 的额外功能:

  解压归档文件: ADD 指令如果遇到压缩文件(如 .tar, .tar.gz, .zip 等),会自动解压这些文件到目标路径。
  从 URL 下载文件: ADD 还支持从URL来源复制文件,这意味着可以直接从互联网上下载文件并将其添加到镜像中。

 

推荐使用:

  由于 COPY 指令更为简单且用途明确,对于大多数仅需复制文件或目录的场景,推荐使用 COPY。

  当你需要利用 ADD 的额外功能(如解压或从URL下载)时,才应选择使用 ADD。

 

安全性与简洁性:

  COPY 被认为是更安全且易于理解的选择,因为它行为直接,没有隐含的额外处理逻辑。

  ADD 因为其额外的特性可能引入更多潜在问题(如不期望的解压行为或网络下载失败),所以在不需要这些特性时,避免使用 ADD 可以减少复杂性和潜在错误。


总结下,选择 COPY 或 ADD 应基于实际需求:如果只需要简单的复制操作,则使用 COPY;如果需要解压归档文件或从URL下载文件,则使用 ADD。
在满足相同功能需求的情况下,倾向于使用 COPY 以保持 Dockerfile 的清晰和简洁。

 

Link:https://www.cnblogs.com/farwish/p/18259654

posted on 2024-06-20 23:03  ercom  阅读(648)  评论(0编辑  收藏  举报