专栏首页MyPanda的学习笔记dockerfile 常用易混指令--(1)

dockerfile 常用易混指令--(1)

学会写dockerfile是我们学习docker的必经之路;在写dockerfile的时候,感觉如下命令还是需要做个记录,以备需要时方便查阅参考: ----------------------------------------------------------------------------------------------

RUN:

这个指令是在dockcer build 的时候执行的,执行的结果会commit到新的image中;常用于一次性操作,比如目标image中需要安装软件,那么用RUN这个指令;

ADD和COPY:

ADD: 这个指令也是docker build的时候执行的,要注意的是:如果src是local的压缩/打包文件,比如tar, zip,bzip2,tar.gz ... , 那么会自动在目标目录解压缩,也就是unpack操作;但是如果src不是本地的文件(比如URL指定的文件),那么不会自动自动的解压等; COPY: 这个指令也是docker build的动作,但是和ADD不同的是,对于archive的处理: copy 会保证文件原来的格式,不会进行unpack的操作,而ADD对本地的文件会进行unpack. 注意ADD, COPY的区别在于对archive的处理模式不同,前者会进行unpack操作,而后者则不会,但是如果source不是本地archive,那么都不会进行unpack.

ARG和ENV:

ARG: 1).这个ARG指令用于添加环境变量,可以设置默认值,也可以没有默认值; 2).通过此方法设置的变量仅仅在docker build的时候生效,而在docker run的时候并不会生效; 3).如果在docker build的时候,指定了相同参数并赋值,那么会替代ARG指令所指定的参数值; 4).如果docker build的时候指定的参数没有通过ARG指令进行指定,那么会有WARNING信息输出; 5).在dockerfile中,只有ARG指令之后的行 ,对变量的引用才会用遵循ARG定义的变量; 6).虽然ARG指令指定的参数在docker run的时候不可见,但是在docker history 中依然可见,所以不要用ARG传递敏感信息,比如密码等;

ENV: 1).该指令也用于指定环境变量,该环境变量既在docker build的时候生效,也在docker run的时候生效; 2).ENV的变量是持久存在的,如果在docker run的时候通过env参数进行指定,那么指定的值会替换dockerfile中定义的值; 3).如果在dockerfile中没有定义,那么在使用docker run的时候指定了env参数,不会有任何报错和警告; 当ENV和ARG有相同名字的时候,在docker build的时候,ENV的环境变量值会overwrite ARG指定的环境变量值

ONBUILD:

这个指令用于创建一个触发器,ONBUILD后面可以跟任意的 "构建image相关的指令",比如RUN,ARG,ENV... onbuild既然是一个触发器指令,那么触发条件是什么呢?当用该docker file 构建的image 作为base image的时候,新的image 在被build的时候就会触发,该指令就像插入在FROM 之后一样会立即得到执行;

本文原创,转载请注明出处

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • dockerfile常用易混指令--(2)

    接上一篇:<<dockerfile 常用易混指令--(1)>>, 本篇介绍剩余的几个基础指令:

    干点啥吧
  • 私有docker registry的使用--push,pull,search,delete

    在上一节中,我们创建了基于busybox的registry image(https://www.jianshu.com/p/07a1d118ba17), 在这里...

    干点啥吧
  • 数字证书系列--用证书搭建https网站

    在前面一节介绍了如何创建CA, 以及如何用CA对CSR 证书请求文件进行签名,从而生成签名的服务器端证书。生成签名证书不是我们的最终目的,利用生成的签名证书来加...

    干点啥吧
  • K8S 之 kubeadm 安装

    Kubeadm 是一个工具,它提供了 kubeadm init 以及 kubeadm join 这两个命令作为快速创建 kubernetes 集群的最佳实践。

    YP小站
  • 如何提升云计算数据保护的状态

    如今,大多数数据保护解决方案使用公共云平台,以降低本地数据保护基础设施的成本。而为了节省成本,供应商通常将备份数据集存储在低成本对象存储中。

    静一
  • Photoshop保存ICO格式插件 ICOFormat.8bi

    Photoshop 一直不支持导入导出ico格式图标文件,不过还好有一款插件可以让photoshop支持打开和保存 ico 图标格式,这款插件就是 ICOFor...

    德顺
  • 被控造假、打人之后要一雪前耻!“杀马特”华裔教授推出paGAN,GoodFellow也点赞

    【新智元导读】还记得“杀马特教授”黎颢吗?他将率领团队在下周召开的SIGGRAPH中展示一项黑科技“paGAN”:每秒1000帧扫描,用单幅照片实时生成超逼真动...

    新智元
  • RedHat 开源企业镜像项目 Quay

    Quay 是一个registry,存储,构建和部署容器的镜像仓库。它分析您镜像中的安全漏洞,可帮助您减轻潜在的安全风险问题。此外,它提供地理复制和BitTorr...

    YP小站
  • 奥数国家队时隔十年再有女生入选,6名选手5位来自南方高中

    据已公布消息,2020年IMO(国际数学奥林匹克竞赛)中国国家队名单,6名征战选手全部确定。

    量子位
  • 年入2亿的新潮挑战130亿的分众 :浮出水面太早,或对自身不利?

    最近几天楼宇广告市场非常热闹。新潮传媒召开年会,宣布公司2017年营收过2亿,跃身第二大电梯媒体公司,仅次于去年营收130亿的分众传媒,新潮传媒还向分众传媒发起...

    罗超频道

扫码关注云+社区

领取腾讯云代金券