重庆小潘seo博客

当前位置:首页 > 重庆网络营销 > 小潘杂谈 >

小潘杂谈

云计算核心技术Docker教程:Dockerfile中ADD和COPY的区别

时间:2020-09-16 11:00:12 作者:重庆seo小潘 来源:
在docker使用中Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。Dockerfile 中提供了两个非常相似的命令 COPY 和 ADD,本文将解释这两个命令的基本功能,和它们之间的区别,然后总结其各自适合的应用场景。 COPY命

在docker使用中Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。Dockerfile 中提供了两个非常相似的命令 COPY 和 ADD,本文将解释这两个命令的基本功能,和它们之间的区别,然后总结其各自适合的应用场景。

云计算核心技术Docker教程:Dockerfile中ADD和COPY的区别

COPY命令格式为COPY [--chown=:] ...,功能是复制指令,从上下文目录中复制文件或者目录到容器里指定路径。而ADD指令的命令格式跟COPY相同。其中上下文目录指的是docker build 命令的 PATH 或 URL 指定的路径中的文件的集合。

ADD在执行为 tar 压缩文件的话,压缩格式为 gzip, bzip2 以及 xz 的情况下,会自动复制并解压到 ,但在不解压的前提下,无法复制 tar 压缩文件。会令镜像构建缓存失效,从而可能会令镜像构建变得比较缓慢。具体是否使用,可以根据是否需要自动解压来决定。

当版本1.0的Docker发布时,包含了新的COPY指令。与ADD不同的是,COPY直接将文件和文件夹从构建上下文复制到容器中。COPY不支持URL作为参数,因此它不能用于从远程位置下载文件。任何想要复制到容器中的东西都必须存在于本地构建上下文中。

另外,COPY对压缩文件没有特别的处理。如果您复制归档文件,它将完全按照出现在构建上下文中的方式落入容器中,而不会尝试解压缩它。

COPY 命令是为最基本的用法设计的,概念清晰,操作简单。而 ADD 命令基本上是 COPY 命令的超集,可以实现一些方便、酷炫的拷贝操作。ADD 命令在增加了功能的同时也增加了使用它的复杂度,比如从 url 拷贝压缩文件时弊大于利。在不用自动解压工作或者添加远程文件到镜像中,同样需求下,官方推荐使用 COPY进行指令操作。