ADD 更高级的复制
ADD
指令和 COPY
的格式和性质基本一致。但是在 COPY
基础上增加了一些功能。
比如 <源路径>
可以是一个 URL
,这种情况下,Docker 引擎会试图去下载这个连接的文件放到<目标路径>去。下载后的文件权限自动设置为 600
,如果这并不是想要的权限,呢么还需要增加额外一层RUN进行调整,另外如果下载的是个压缩包,需要解压缩,也一样还需要额外的一层RUN指令进行解压缩。
如果 <源路径>
为一个 tar
压缩文件的话,压缩格式为 gzip
, bzip2
以及 xz
的情况下,ADD
指令会自动解压缩到 <目标路径>
中。
在 Docker 官方的 Dockerfile最佳实践文档中要求,尽可能的使用 COPY
,因为 COPY
的语意明确,就是复制文件而已,而 ADD
则包含了更复杂的功能,其行为也不一定很清晰。最适合使用 ADD
的场景,就是需要自动解压缩的场合 。
需要注意的是,ADD
指令会令构建缓存失效,从而可能会令镜像构建变得比较缓慢。
最后更新于
这有帮助吗?