乐闻世界logo
搜索文章和话题

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

3 个月前提问
3 个月前修改
浏览次数25

1个答案

1

在Dockerfile中,COPYADD命令都用于将文件从构建上下文复制到Docker镜像中。尽管它们的功能相似,但是有一些关键的区别:

  1. 基本功能

    • COPY:将文件或目录从构建上下文复制到镜像中的指定路径。它仅支持基本的复制功能。
    • ADD:除了具有COPY的所有功能外,ADD还支持两个额外的功能:自动解压缩压缩文件(如tar文件)到镜像中,以及可以使用URL作为源路径直接下载文件到镜像。
  2. 使用场景

    • COPY是推荐使用的命令,当你需要简单地复制本地文件到镜像时,应该优先选择使用COPY
    • ADD可以在特定情况下使用,比如当你需要自动解压缩文件,或者需要从互联网下载文件到镜像时。
  3. 示例

    • 使用COPY命令:

      dockerfile
      COPY ./app /usr/src/app

      这行命令将本地的app目录复制到镜像的/usr/src/app路径下。

    • 使用ADD命令:

      dockerfile
      ADD https://example.com/example.tar.gz /var/www

      这行命令不仅下载了example.tar.gz文件,并且自动在/var/www目录下解压了它。

总结来说,虽然ADD提供了一些额外的功能,但Docker的官方文档推荐通常使用COPY因为COPY的行为更为直接和透明。只有在需要ADD额外功能的特定情况下才考虑使用ADD

2024年8月10日 00:21 回复

你的答案