DockerFile中Add跟Copy的区别
Dockerfile 中的 ADD 和 COPY 两个指令都用于将文件从主机复制到 Docker 镜像中,但它们之间有一些关键区别:
复制源文件类型:
ADD:可以复制本地文件、远程文件(通过URL)、以及解压缩文件(会自动解压缩)到镜像中。COPY:只能复制本地文件或目录到镜像中。不支持远程文件或自动解压缩。
目标路径处理:
ADD:如果目标路径不存在,会尝试创建目录。如果复制的是压缩文件,会自动解压到目标路径。COPY:要求目标路径必须事先存在,不会执行自动解压缩操作。
建议用途:
- 一般情况下,如果你只需要将本地文件或目录复制到镜像中,并且不需要复制远程文件或自动解压缩,建议使用
COPY,因为它更明确和简单。 - 如果需要复制远程文件或者要求自动解压缩,可以使用
ADD。
- 一般情况下,如果你只需要将本地文件或目录复制到镜像中,并且不需要复制远程文件或自动解压缩,建议使用
示例使用 COPY:
1 | COPY ./sourcefile.txt /destination/ |
示例使用 ADD:
1 | ADD https://example.com/file.tar.gz /destination/ |
总的来说,选择使用哪个指令取决于你的需求和是否需要额外的功能。通常情况下,为了保持 Dockerfile 的清晰和简单,建议使用 COPY,除非你明确需要 ADD 的额外功能。