Dockerfile镜像构建:用法详解 / 构建http /构建busybox / 熟悉ENTRYPOINT的shell格式和exec格式的区别

######1.dockerfile详解######

dockerfile常用指令:

  • FROM:指定base镜像;如果本地有从本地调取,如果本地不存在会从远程仓库下载。
  • MAINTAINER:设置镜像的作者,比如用户邮箱等。
  • COPY:把文件从build context复制到镜像。支持两种形式:COPY src dest和COPY ["src","dest"]
        src必须指定build context中的文件或目录。
  • ADD:用法和COPY类似,不同的是src可以是归档压缩文件,文件会被自动解压到dest,
       也可以自动下载URL并拷贝到镜像:
       ADD html.tar /var/www           ADD http://ip/html.tar/var/www
  • ENV:设置环境变量,变量可以被后续的指令使用。 ENV HOSTNAME server1.example.com
  • EXPOSE:如果容器中运行应用服务,可以把服务端口暴露出去。 EXPOSE 80
  • VOLUME:申明数据卷,通常指定的是应用的数据挂载点。 VOLUME ["/var/www/html"]
  • WORKDIR:为RUN、CMD、ENTRYPOINT、ADD和COPY指令设置镜像中的当前工作目录,
                        如果目录不存在会自动创建。
  • RUN:在容器中运行命令并创建新的镜像层,常用于安装软件包。 RUN yum install -y vim
  • CMD:用于设置容器启动后执行的命令,会被docker run后面的命令行覆盖。
  • ENTRYPOINT:用于设置容器启动后执行的命令,不会被忽略,一定会被执行。
               docker run后面的参数可以传递给ENTRYPOINT指令当作参数。
               Dockerfile中只能指定一个ENTRYPOINT,如果指定了多个,只有最后一个有效。
               shell格式底层会调用/bin/sh -c来执行命令,可以解析变量,而exec格式不会。
               FROM busybox      【shell格式】            FROM busybox    【exec格式】
               ENV name world                                       ENV name world
               ENTRYPOINT echo "hello,$name"         ENTRYPOINT ["/bin/echo","hello,$name"]
               需要改写为ENTRYPOINT ["/bin/sh","-c","echo hello,$name"]
               在exec格式时,ENTRYPOINT可以通过CMD提供额外参数,CMD的额外参数可以在容器启动时动态替换。
               在shell格式时,ENTRYPOINT会忽略任何CMD或docker run提供的参数。
               FROM busybox
               ENTRYPOINT ["/bin/echo","hello"]
               CMD ["world"]    【官方推荐使用exec格式】

###1.构建文件###

[root@server1 docker]# vim Dockerfile 
FROM ubuntu               ##指定镜像
RUN touch file{1..5}      ##运行容器创建镜像
[root@server1 docker]# docker build -t ubuntu:v1 .   创建镜像 
(-t: 指定镜像的名字及标签   ".":Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径)

【注意】:每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值