Docker经典面试题:Dockerfile中,ADD和COPY的区别?

面对几乎每个面试的候选人,我都会问这个问题,但很奇怪,这个问题并不难,但却很少有人能回答得比较全面。


Docker经典面试题:Dockerfile中,ADD和COPY的区别?

这两个命令其实都是Dockerfile非常基础的命令。两个命令的格式类似

ADD

ADD [“<源路径>“,... “<目标路径>“]

COPY

COPY [“<源路径1>“,“<源路径2>“... “<目标路径>“]

但它们在使用上面还有有些区别的,大部分童鞋的回答基本都是:经常使用,都是拷贝文件到镜像里面,但没有注意有啥区别。

其实他们之间主要有两点区别

  1. 第一个区别是ADD的源可以是URL,当遇到URL时候,ADD可以通过URL下载文件并且复制到目标路径,但这样也会带来安全隐患,无法确定URL地址是一个安全可信赖的资源,所有建议生产环境尽量使用COPY。
  2. 第二个区别是ADD可以解压,当遇到tar, gzip, bzip2等压缩格式,可以解压到指定的目录。ADD的解压并非直接读取文件名后缀,而是通过解析文件内容从而确定源文件是否属于压缩归档文件,所以如果是一个压缩归档文件,无论如何重命名,都可以解压到指定的目标目录下。

最后还需要注意:当我们在Dockerfile目录下执行”docker build -t xx .“构建镜像的时候,当前的构建目录就是Dockerfile所在目录,无论是COPY还是ADD源路径都是相对于Dockerfile文件来说的,所以这些源文件必须放到Dockerfile同级或者子目录里面,不支持通过“../”方式从父目录中搜索文件。

展开阅读全文

页面更新:2024-02-10

标签:区别   子目录   源文件   后缀   候选人   文件名   安全隐患   少有   路径   无论如何   命令   目标   格式   文件   目录   经典   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top