暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Dockerfile-ADD和COPY指令优缺点

DevOps架构实战 2021-11-08
1311

点击蓝色“DevOps架构实战”关注我哟

分享到“朋友圈”,每天上午 07:30,干货推送!

ADD指令的功能是将主机构建环境(上下文)目录中的文件和目录、以及一个URL标记的文件 拷贝到镜像中。

其格式是:ADD  源路径  目标路径

ADD<src>...<dest>   

ADD ["<src>"..."<dest>"]

ADD指令和copy的使用格式一致,不同这处:

ADD的优点:在执行源文件 为tar压缩文件的话,压缩格式为gzip,bzip的情况下会自动复制并解压到目录路径,

ADD的缺点: 在不解压的前提下,无法复制tar的压缩文件,会令镜像构建缓存失效,从而可能会令镜像构建变得比较缓慢。具体是否使用,可以根据是否需要自动解压来决定。

注意事项:

1、如果源路径是个文件,且目标路径是以 结尾, 则docker会把目标路径当作一个目录,会把源文件拷贝到该目录下。

如果目标路径不存在,则会自动创建目标路径。

2、如果源路径是个文件,且目标路径是不是以 / 结尾,则docker会把目标路径当作一个文件。

如果目标路径不存在,会以目标路径为名创建一个文件,内容同源文件;

如果目标文件是个存在的文件,会用源文件覆盖它,当然只是内容覆盖,文件名还是目标文件名。

如果目标文件实际是个存在的目录,则会源文件拷贝到该目录下。注意,这种情况下,最好显示的以 / 结尾,以避免混淆。

3、如果源路径是个目录,且目标路径不存在,则docker会自动以目标路径创建一个目录,把源路径目录下的文件拷贝进来。

如果目标路径是个已经存在的目录,则docker会把源路径目录下的文件拷贝到该目录下。

4、如果源文件是个归档文件(压缩文件),则docker会自动帮解压。


ADD包含类似tar的解压功能,如果只是复制文件 推荐使用copy,如替换

替换/usr/share/nginx/html/下的index.html

[root@k8s-node2 ~]# cat dockerfile

FROM  centos7

MAINTAINER  hahashen

RUN   yum -y install nginx

COPY  index.html /usr/share/nginx/html/

EXPOSE  8088

ENTTRYPOINT  ["/usr/sbin/nginx", "-g","daemon off;"]

[root@k8s-node2 ~]# docker build -t="dockerfile/nginx:v1" .

[root@k8s-node2 ~]# docker run -itd -p 80 dockerfile/nginx:v1 /bin/bash

如果是源码安装nginx.tar.gz ,只能使用:

ADD nginx.tar.gz  /opt

----------------------end---------------------
长按识别下方二维码,即可关注

👇👇👇

动动小手,即可免费获得Python基础30讲视频下载哦!
文章转载自DevOps架构实战,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论