Dockerfile简介

  1. 什么是Dockerfile?
    Dockerfile是用来构建docker镜像的构建文件,是由一系列命令和参数构成的脚本。
  2. 构建Dockerfile的三步骤:
     a:编写Dockerfile文件
     b:docker build去执行文件
     c:docker run去运行生产的镜像
  3. Dockerfile的构建过程解析
     a:每条保留字指令都必须为大写字母且后面要跟随至少一个参数
     b:指令按照从上到下,顺序执行
     c:#表示注释
     d:每条指令都会创建一个新的镜像层,并对镜像进行提交
  4. Docker执行Dockerfile的大致流程
          a:dcoker从基础镜像运行一个容器
          b:执行一条指令并对容器做出修改
          c:执行类似docker commit的操作提交一个新的镜像层
          d:docker再基于刚提交的镜像运行一个新容器
          e:执行dockerfile中的下一条指令直到所有指令都执行完成
  5. dockerfile的体系结构(保留字指令)
    ①FROM:表示基础镜像,当前新镜像是基于哪个镜像的。
                 例如:FROM tomcat  -----》就是基于tomcat作为基础镜像的
    ②MAINTAINER:表示镜像维护者的姓名和邮箱地址    
                 例如:MAINTAINER The Centos Project <cloud-ops@centos.org>
    ③RUN:表示容器构建时需要运行的命令
    ④EXPOSE:表示构建的容器启动后对外暴露的端口号
                 例如:EXPOSE 6379
    ⑤WORKDIR:表示指定在容器创建后,终端默认登录进来的工作目录,一个落脚点      
                 例如:WORKDIR /data   表示当我们进入容器后默认就在/data这个目录下
    ⑥ENV:用来在构建镜像过程中设置环境变量
                 例如:ENV MY_PATH /usr/mytest   表示我们设置一个环境变量名称为MY_PATH,
                            值为/usr/mytest,那么我们后面就可以引用这个环境变量。比如我们在设置
                            落脚点的时候,WORKDIR $MY_PATH,那么登录进来后直接就是在/usr/mytest
                            目录下。
    ⑦ADD: 将宿主机目录下的文件拷贝进镜像并且ADD命令会自动处理URL和解压tar压缩包     
                 例如:ADD centos-7-docker.tar.xz /
    ⑧COPY:类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中<源路径>的文件/目录
                           复制到新的一层镜像内的<目标路径>位置。
                 例如:COPY src dest 或者 COPY ["src","dest"]
     ⑨VOLUME:容器数据卷,用于数据保存和持久化工作
     ⑩CMD
              a:表示指定一个容器启动时要运行的命令
                        
                  b:Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run 之后
                        的参数替代。
      ENTRYPOINT:表示指定一个容器启动时要运行的命令,ENTRYPOINT的目的和CMD一样,
                                     都是在指定容器启动程序及参数。
      ONBUILD:表示当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的
                              onbuild被触发。
  6. 案例之构建自己的centos镜像
     ⑴Base镜像(scratch)
           Docker Hub中99%的镜像都是通过在base镜像中安装和配置需要的软件构建出来的。
     ⑵自定义镜像mycentos
           ①我们现在可以看看我们从网上下载下载的centos镜像原本是什么样子的
                 
    ⑶在/opt/dockerfile目录下创建自己的dockerfile
       
         
    #基于我们从阿里云下载下来的centos基础镜像
    FROM centos
    
    #定义作者信息
    MAINTAINER kgf<kgf@163.com>
    
    #设置环境变量
    ENV MY_PATH /usr/local
    
    #定义进入容器后的工作目录就是/usr/local
    WORKDIR $MY_PATH
    
    #定义容器支持vim命令
    RUN yum -y install vim
    
    #定义容器支持ifconfig命令
    RUN yum -y install net-tools
    
    #定义容器暴露的端口号为80
    EXPOSE 80
    
    #输出构建完成信息
    CMD echo "=============构建完成============"
    
    #最后进入容器的/bin/bash路径下
    CMD /bin/bash

    ⑷使用dockerfile文件构建新的镜像
          命令:docker build -f Dockerfile的绝对路径 -t 镜像名称:版本号 .
              docker build -f /opt/dockerfile/mydockerfile-centos -t mycentos:v1.1 .
       
        
    ⑸下面我们运行新建的镜像
           命令:docker run -it mycentos:v1.1
      
     
    ⑹使用docker history +镜像ID 查看镜像详细信息
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值