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

Wil*_*xao 5 docker

我不清楚,为什么有两条指令可以将文件复制到 Dockerfile 参考中描述的 Docker 映像中。有ADDCOPY,它们看起来与我非常相似。它们之间有实际区别吗?如果不是,最常用的是哪一种?

der*_*ert 6

ADD执行更多“魔法”:它获取 URL 并解压缩档案。这可能有点出乎意料(尤其是解压档案)。官方最佳实践指南建议您使用 COPY,除非您需要 ADD 的额外功能


Wil*_*xao 5

根据编写 Dockerfiles 的最佳实践

虽然ADDCOPY在功能上相似,但一般来说,COPY 是首选。那是因为它比ADD.

ADD可以解压tar文件,获取远程URL文件,虽然官方文档里不是很清楚。同样重要的是要声明,

由于图像大小很重要,ADD因此强烈不鼓励使用从远程 URL 获取包;你应该使用curlorwget代替。

COPY entrypoint.sh /srv/app/
ADD app.tar /srv/app/
Run Code Online (Sandbox Code Playgroud)

所以一般规则是@derobert 提到的,COPY除非你需要ADD独家功能,否则使用。