Dockerfile中的`COPY`和`ADD`命令有什么区别?
  Dockerfile中COPY和ADD命令之间有什么区别,以及我何时使用另一个命令? 
COPY <src> <dest>
  COPY指令将从<src>复制新文件,并将它们添加到路径<dest>的容器文件系统中 
ADD <src> <dest>
  ADD指令将从<src>复制新文件,并将它们添加到路径<dest>的容器文件系统中。 
  您应该检查ADD和COPY文档以详细描述其行为,但简而言之,主要区别在于ADD可以做的不仅仅是COPY : 
ADD允许<src>成为一个URL ADD的<src>参数是以可识别的压缩格式存档,则它将被解压缩   请注意,编写Dockerfiles的最佳实践建议使用COPY ,其中不需要ADD的魔力。  否则,当你想将keep_this_archive_intact.tar.gz复制到你的容器中时,你(因为你必须查找这个答案)有可能会感到惊讶,但是你可以将内容喷到你的文件系统上。 
  COPY是 
与“ADD”相同,但没有tar和远程URL处理。
直接从源代码中引用。
关于这一点有一些官方文档:编写Dockerfiles的最佳实践
  由于图像大小很重要,因此强烈建议使用ADD从远程URL获取软件包;  你应该使用curl或wget代替。  通过这种方式,您可以删除在解压缩后不再需要的文件,而无需在图像中添加其他图层。 
RUN mkdir -p /usr/src/things 
  && curl -SL http://example.com/big.tar.gz 
    | tar -xJC /usr/src/things 
  && make -C /usr/src/things all
  对于不需要ADD的tar自动提取功能的其他项目(文件,目录),您应该始终使用COPY 。 
上一篇: What is the difference between the `COPY` and `ADD` commands in a Dockerfile?
下一篇: How to enter in a Docker container already running with a new TTY
