DockerFile中Add跟Copy的区别

Dockerfile 中的 ADDCOPY 两个指令都用于将文件从主机复制到 Docker 镜像中,但它们之间有一些关键区别:

  1. 复制源文件类型:

    • ADD:可以复制本地文件、远程文件(通过URL)、以及解压缩文件(会自动解压缩)到镜像中。
    • COPY:只能复制本地文件或目录到镜像中。不支持远程文件或自动解压缩。
  2. 目标路径处理:

    • ADD:如果目标路径不存在,会尝试创建目录。如果复制的是压缩文件,会自动解压到目标路径。
    • COPY:要求目标路径必须事先存在,不会执行自动解压缩操作。
  3. 建议用途:

    • 一般情况下,如果你只需要将本地文件或目录复制到镜像中,并且不需要复制远程文件或自动解压缩,建议使用 COPY,因为它更明确和简单。
    • 如果需要复制远程文件或者要求自动解压缩,可以使用 ADD

示例使用 COPY

1
COPY ./sourcefile.txt /destination/

示例使用 ADD

1
ADD https://example.com/file.tar.gz /destination/

总的来说,选择使用哪个指令取决于你的需求和是否需要额外的功能。通常情况下,为了保持 Dockerfile 的清晰和简单,建议使用 COPY,除非你明确需要 ADD 的额外功能。