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

本文详细介绍了Dockerfile的使用,包括构建文件、镜像缓存特性、版本升级和删除镜像。通过实例演示了构建http服务和busybox镜像的过程,讲解了ENTRYPOINT的shell格式与exec格式的区别,以及如何在exec格式中通过CMD传递参数。
摘要由CSDN通过智能技术生成

######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 ["worl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值