dockefile 指令解释

dockefile 指令解释
#除了注释行之外的第一行,必须是 From xxx (xxx 是基础镜像) 
#第一行先定义基础镜像,后面的本地有效的镜像名,如果本地没有会从远程仓库下载
From centos  

#镜像维护者的信息 
MAINTAINER zt 25958889@qq.com

#指定该容器运行时的用户名和 UID,后续的 RUN 命令也会使用这面指定的用户执行 
USER xx

WORKDIR /a 
WORKDIR b  #指定工作目录,最终为/a/b ,通常很少使用workdir 而使用RUN cd代替

#设置容器挂载主机目录 ,创建一个可以从本地主机或其他容器挂载的挂载点,可以把主机的文件映射到容器。
VOLUME ["/dir_1", "/dir_2" ..] 

#设置容器变量,常用于想容器内传递用户密码等 ,在容器运行之后可以用echo $变量名 查看
ENV name zt

#RUN用于执行from 镜像中的原生shell 命令
RUN yum install nginx

#拷贝本地(默认和Dockerfile在一个目录)的文件拷贝到容器镜像中
COPY src dest
COPY check* /testdir/ 

#ADD自动解压和dockerfile在一个目录的压缩包到容器指定目录。 解压目录如果不存在会自动创建
ADD nginx-1.10.3.tar.gz  /usr/local/src/  


#向外开放的端口,多个端口用空格做间隔,启动容器时候-p 需要使用此端向外映射,可以是多个端口
EXPOSE 80 443

#运行的命令,每个 Dockerfile 只能有一条,如果有多条则只有最后一条被执行 
#如果在从该镜像启动容器的时候也指定了命令,那么指定的命令会覆盖
#Dockerfile 构建的镜像里面的 CMD 命令,即指定的命令优先级更高,Dockerfile 的优先级较低一些 
CMD ["nginx"] 

注意:

​ 写dockerfile 的指令之前 ,可以先起一个父镜像的容器,在这个容器里,先把操作执行一遍,如果没有问题。就把操作写成对应的dockerfile 指令即可。

通常dockefile 不可能一步编写完成,可以把docker build 命令写好放在一个脚本中。每完成一部分就可以执行一下改脚本,确认是否有错误。

​ 在满足业务需求的情况下,可以精简镜像。每条dockerfile中的指令都是镜像中的一层,可以把多条功能相似的命令合并为一条,或者用&&连接起来。然后,可以把构建完成之后的不需要的命令相关软件包都可以删了。这样也可以减小容器体积。 当然,可以选择合适的更小的底层镜像,如alpine。

​ 在写dockerfile 时, 要把不经常变动的指令写在前面 ,如ENV之类的,这样的好处是可以提升构建镜像时的数度。当你第一次构建镜像之后,第二次前n行没有改,那么前n行就不用重写构建了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值