参考答案:
在 Dockerfile 中,COPY
和 ADD
都用于将文件和目录从主机复制到 Docker 镜像中的指定位置,但它们之间有一些细微的区别。
COPY
命令COPY
命令是最基本的文件复制命令,用于将本地文件或目录复制到 Docker 镜像中的指定路径。
1COPY <src> <dest>
<src>
:指定源文件或目录(相对于 Dockerfile 所在路径)。<dest>
:指定目标路径(在容器内的路径)。COPY
不支持从远程 URL 下载文件,也不支持自动解压文件。1COPY ./local-file.txt /app/local-file.txt
将本地的 local-file.txt
文件复制到镜像中的 /app/
目录下。
ADD
命令ADD
命令比 COPY
更为复杂,功能更强大。它不仅可以像 COPY
一样复制本地文件和目录,还具有额外的功能。
1ADD <src> <dest>
<src>
:指定源文件或目录,可以是本地文件/目录,也可以是一个 URL。<dest>
:指定目标路径(在容器内的路径)。.tar
、.tar.gz
、.zip
等格式),ADD
会自动解压文件到目标路径。ADD
可以从远程 URL 下载文件并将其添加到镜像中。1ADD ./local-file.tar.gz /app/
如果 local-file.tar.gz
是一个压缩文件,ADD
会自动解压文件到 /app/
目录。
1ADD https://example.com/file.tar.gz /app/
ADD
可以直接从远程 URL 下载文件并将其添加到镜像中。
特性 | COPY | ADD |
---|---|---|
功能 | 仅将文件或目录复制到镜像中 | 除了复制文件外,还支持解压文件,支持 URL 下载 |
支持解压 | 不支持 | 支持自动解压 .tar 格式文件 |
支持 URL | 不支持 | 支持通过 URL 下载文件 |
COPY
:对于简单的文件复制操作,推荐使用 COPY
,因为它更为明确和简单,也能提升构建速度。ADD
仅在需要时:只有在你需要从 URL 下载文件或自动解压压缩文件时,才考虑使用 ADD
。对于其他情况,尽量避免使用 ADD
,以减少不必要的复杂性。COPY
复制文件:1COPY ./file.txt /app/
ADD
解压文件:1ADD ./file.tar.gz /app/
ADD
会解压 file.tar.gz
到 /app/
目录中。
最近更新时间:2024-12-09