当前位置: 首页 > 面试题库 >

Dockerfile中的“ COPY”和“ ADD”命令有什么区别?

杜烨伟
2023-03-14
问题内容

Dockerfile中的COPYADD命令之间有什么区别,何时可以在另一个之上使用?

COPY <src> <dest>

COPY指令将从以下位置复制新文件<src>并将其添加到容器的文件系统中:<dest>

ADD <src> <dest>

ADD指令将从中复制新文件<src>并将其添加到位于path的容器的文件系统中<dest>


问题答案:

您应该查看ADDCOPY文档以获取有关其行为的更详细描述,但简而言之,主要区别在于ADD可以做的还不止COPY

  • ADD允许<src>成为网址
  • 参考下面的评论,ADD 文档指出:

如果是以公认的压缩格式(身份,gzip,bzip2或xz)作为本地tar归档文件,则将其解压缩为目录。来自远程URL的资源不会被解压缩。

请注意,编写Dockerfile的最佳实践建议COPYADD不需要魔术的地方使用。否则,当您打算复制到容器中时,您( 由于必须查找此答案
)可能有一天会感到惊讶keep_this_archive_intact.tar.gz,而是将内容喷洒到文件系统上。



 类似资料:
  • Dockerfile中的和命令之间有什么区别?什么时候我会使用一个命令而不是另一个命令? COPY指令将从复制新文件,并将它们添加到路径的容器文件系统中 ADD指令将从复制新文件,并将它们添加到路径的容器文件系统中。

  • 问题内容: 我想在Dockerfile内将文件复制到映像中(如果存在),pip的requirements.txt文件似乎是一个不错的选择,但是如何实现呢? 要么 问题答案: 目前尚不支持此功能(因为我怀疑它会导致图像无法复制,因为相同的Dockerfile会根据文件的存在来复制或不复制该文件)。 在问题13045中,仍要求使用通配符“ ”(2015年5月)。 目前(2015年7月)不会在Docke

  • 问题内容: 在提交错误之前,我想请某人确认我最近遇到的奇怪行为。 考虑一下我们有一个简单的Dockerfile,我们试图将一些文件复制到非root用户的主目录中: 这就是我尝试构建此映像时得到的: 好像是空的。但为什么?将绝对路径放置到home目录而不是不是很方便。 问题答案: 这是您的问题: 使用指令时,它会影响用于在容器内启动新命令的用户标识。因此,例如,如果您这样做: 你得到这个: 因为这些

  • 问题内容: 在Dockerfiles中,有两个与我相似的命令:和。但是我想它们之间有一个(细微的?)差异- 否则对于同一件事有两个命令是没有任何意义的。 文档说明 CMD的主要目的是为执行中的容器提供默认值。 和为: ENTRYPOINT帮助您配置可以作为可执行文件运行的容器。 那么,这两个命令有什么区别? 问题答案: Docker有一个默认入口点,但没有默认命令。 当您像这样运行docker时:

  • 在Dockerfiles中有两个与我类似的命令:和。但我猜有一个(微妙?)它们之间的差异--否则,对同一件事使用两个命令是没有任何意义的。 文档中的状态为 CMD的主要目的是为正在执行的容器提供默认值。 入口点帮助您配置可以作为可执行文件运行的容器。 那么,这两个命令有什么区别呢?

  • 我发现了一个结果 alpha命令和beta命令有什么区别?