Dockerfile 中的“COPY”和“ADD”命令有什么区别?

新手上路,请多包涵

Dockerfile 中的 COPYADD 命令有什么区别,我什么时候可以使用其中一个?

 COPY <src> <dest>

COPY 指令将从 <src> 复制新文件并将它们添加到容器的文件系统中的路径 <dest>

 ADD <src> <dest>

ADD 指令将从 <src> 复制新文件并将它们添加到容器的文件系统中的路径 <dest>

原文由 Steve 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 499
2 个回答

您应该查看 ADDCOPY 文档以更详细地描述它们的行为,但简而言之,主要区别在于 ADD 可以做的更多 COPY

  • ADD 允许 <src> 成为 URL
  • 参考下面的评论, ADD 文档 指出:

如果是可识别压缩格式(identity、gzip、bzip2 或 xz)的本地 tar 存档,则将其解压缩为目录。来自远程 URL 的资源不会被解压缩。

请注意, 编写 Dockerfile 的最佳实践 建议使用 COPY 其中不需要 ADD 的魔力。否则,当您打算将 keep_this_archive_intact.tar.gz 复制到您的容器中时,您( _因为您必须查找此答案_)可能会感到惊讶,而是将内容喷到您的文件系统上。

原文由 icecrime 发布,翻译遵循 CC BY-SA 4.0 许可协议

COPY

与“添加”相同,但没有 tar 和远程 URL 处理。

直接从源代码 中引用。

原文由 caike 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题