乐闻世界logo
搜索文章和话题

Dockerfile中的COPY和ADD指令有什么区别?

2月7日 13:58

COPY 和 ADD 都是 Dockerfile 中用于从构建环境复制文件到 Docker 镜像中的指令。但是,它们之间有一些关键的区别:

  1. 基本功能

    • COPY: 简单地将本地文件或目录复制到目标 Docker 镜像中的指定路径。
    • ADD: 同样可以复制本地文件或目录到镜像中,但 ADD 还支持两个附加功能:一是能够处理 URL 源文件,将 URL 指向的文件下载到镜像中;二是在复制过程中自动处理压缩格式的文件(如 tar 压缩包),将压缩包解压到目标路径。
  2. 使用建议

    • 由于 COPY 只关注基本复制操作,它的行为更为直接和预测,因此 Docker 官方推荐在只需要复制文件的场景下使用 COPY
    • ADD 应当用于 COPY 无法满足的特殊场景,比如需要下载网络资源或自动解压压缩文件时。
  3. 示例

    • 使用 COPY 指令: COPY ./localfile.txt /path/in/container/localfile.txt
    • 使用 ADD 指令: ADD http://example.com/examplefile.tar /path/in/container/

总结来说,尽管 ADD 提供了更多功能,但在大多数情况下,推荐使用 COPY 以保持 Dockerfile 的简洁和可维护性。

标签:Docker