5、Dockerfile文件和build构建命令操作介绍

1、介绍

在Docker中创建镜像最常用的方式,就是使用Dockerfile。Dockerfile是一个Docker镜像的描述文件,我们可以理解成火箭发射的A、B、C、D…的步骤。Dockerfile其内部包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下述文章结构
在这里插入图片描述

Dokcerfile操作基础介绍

在这里插入图片描述
在这里插入图片描述

Dockerfile的常用命令

在这里插入图片描述

#基于centos镜像
FROM centos

#维护人的信息
MAINTAINER The CentOS Project <303323496@qq.com>

#安装httpd软件包
RUN yum -y update
RUN yum -y install httpd

#开启80端口
EXPOSE 80

#复制网站首页文件至镜像中web站点下
ADD index.html /var/www/html/index.html

#复制该脚本至镜像中,并修改其权限
ADD run.sh /run.sh
RUN chmod 775 /run.sh

#当启动容器时执行的脚本文件
CMD ["/run.sh"]

在这里插入图片描述
Dockerfile的脚本命令介绍

命令解释
FROM基础镜像,指明当前新镜像是哪个镜像的
MAINTAINER镜像维护者的姓名和邮箱
RUN容器构建时需要运行的命令
EXPOSE当前容器对外暴露出的端口
WORKDIR指定在创建容器后,终端默认登录进来的工作目录,即一个登录进来后的落脚点
ENV添加环境变量到容器中
ADD将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
COPY类似ADD,拷贝文件和目录到镜像中,但不解压。将从构建上下问目录中<源路径>的文件/目录复制到新的一层镜像内的<目标路径>位置---------(1)CORY src dest(2)COPY [“src”,“dest”]
VOLUME容器数据卷,用于数据保存和持久工作
CMD指定一个容器时要运行的命令。Dockerfile中可以有多个CMD执行,但后面的CMD命令会覆盖前面的,最终只有最后一个生效,CMD会被docker run之后的参数替换
ENTRYPOINT指定一个容器启动时要运行的命令。其目的和CMD一样,都是在指定容器启动程序及参数,但该命令可有多个且不会覆盖,即为追加效果。
ONBUILD用于该Dockerfile被其他Dockerfile继承时启动的触发命令,当父镜像在被子镜像继承成后父镜像的onbuild将会被触发

在这里插入图片描述

2、构建示例

在这里插入图片描述
首先编写Dockerfile文件

Dockerfile

FROM centos
MAINTAINER zzyy<zzyy@qq.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo "success---------ok"
CMD /bin/bash

上述脚本命令为:

从centos获取基础镜像,
标明维护人的姓名和邮箱,
添加环境变量MYPATH=/usr/local,
在将该镜像生成容器实例话后可直接跳转到/usr/local目录下,
运行下载vim和net-tools命令,
开放80端口,
在输入命令行指令echo $MYAPTH、echo "success---------ok"和/bin/bash,而最后一个CMD将覆盖上面的CMD最终生效的为/bin/bash,即载入容器后运行bash。

docker build 常用命令

Options:-f PATH

指定要使用的Dockerfile路径,若当前路径下有Dockerfile文件,则会自动默认加载此文件

Options:-t name:tag

镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。

docker build -f /mydocker/Dockerfile -t mycentos:1.3 .

开始构建,直到出现下图
在这里插入图片描述
则构建成功
在这里插入图片描述
查看到镜像存在
在这里插入图片描述
再使用mycentos:1.3构建容器,发现构建完后直接进入,到/usr/local。同时,可用vim进行编译,也可以用ifconfig查询网卡地址。

在这里插入图片描述
通过docker history imagesID 可查看到镜像的构建历史,发现采用的是堆栈的形式,从Dockerfile文件中由上向下顺着加载放到堆栈中,而在执行过程中,则是从栈顶执行到栈尾,即Dockerfile文件中由下向上倒着执行。

ONBUILD命令

在这里插入图片描述
创建一个带ONBUILD命令的镜像,即该镜像可作为父镜像来被其余镜像继承。
在这里插入图片描述
构建一个继承myip_father(Dockerfile4构造的镜像)
在这里插入图片描述
当使用Dockerfile5构建镜像时,由于继承了Dockerfile4构建的镜像,则触发了Dockerfile4的ONBUILD命令,执行了RUN echo"father images onbuild---------886",将其输出到了屏幕上。

参考文章1:你必须知道的Dockerfile

参考文章2:Docker build命令

参考视频:尚硅谷Dockerfile

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辰阳星宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值