美文网首页
DockerFile解析

DockerFile解析

作者: 渣渣进化论 | 来源:发表于2018-10-30 15:32 被阅读9次

    Less Interests
    More Interest

    DockerFile是什么

    DockerFile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。

    构建一个镜像

    • 编写Dockerfile文件
    • docker build
    • docker run

    从dockerhub上可以看到DockerFile文件

    DockerFile

    以centos6.8为例

    FROM scratch
    MAINTAINER The CentOS Project <cloud-ops@centos.org>
    ADD c68-docker.tar.xz /
    LABEL name="CentOS Base Image" \
        vendor="CentOS" \
        license="GPLv2" \
        build-date="2016-06-02"
    # Default command
    CMD ["/bin/bash"]
    

    DockerFile构建过程解析

    1.DockerFile内容基础知识

    • 每条保留字指令都必须为大写且后面要跟随至少一个参数(FROM ADD..)
    • 指令按照从上到下,顺序执行
    • .#代表注释
    • 每条指令都会创建一个新的镜像层,并对镜像进行提交

    2.Docker执行DockerFile的大致流程

    • docker从基础镜像运行一个容器
    • 执行一条指令并对容器进行修改
    • 执行类似docker commit的操作提交一个新的镜像层
    • 基于刚提交的镜像运行一个新的容器
    • 执行dockerfile中的下一条指令直到所有的指令都执行完

    从应用软件的角度来看,Dockerfile,Docker镜像,Docker容器分别代表软件的三个不同阶段:
       - DockerFile是软件的原材料
       - Docker镜像是软件的交付品
       - Docker容器则是软件的运行态
    Dockerfile面向开发,Docker镜像为交付标准,Docker容器则是部署和运维


    三者关系

    DockerFile体系结构(保留字指令)

    • FROM:基础镜像,当前镜像是基于那个镜像的
    • MAINTAINER:镜像维护者的姓名和邮箱地址
    • RUN:容器构建时需要运行的容器
    • EXPOSE:当前容器对外暴露的端口号
    • WORKDIR:指定在创建容器后,终端默认登录的工作目录,未指定则在根目录
    • ENV:用来在构建镜像过程中设置环境变量
        ENV MY_PATH=/user/mytest,WORKDIR $MY_PATH,默认的登录工作目录就是/user/mytest
    • ADD:将宿主机目录下的文件拷贝进镜像并且自动处理URL和解压tar压缩包
    • COPY:类似ADD,拷贝文件和目录到镜像
        COPY src dest
        COPY ["src","dest"]
    • VOLUME:容器数据卷,用于数据保存和持久化工作
    • CMD:指定一个容器启动时要运行的命令
        CMD <命令>
        CMD ["可执行文件","参数1","参数2"]
      DockerFile中可以有多个CMD指令,但是只有最后一个生效
    • ENTRYPOINT:指定一个容器启动时要运行的命令,和CMD一样,但是不会替换,追加
    • ONBUILD:当构建一个被继承的DockerFile时运行命令,父镜像在被子镜像继承后父镜像的onbuild被促发

    案例

    • Base镜像(scratch):Docker Hub中99%的镜像都是通过在base镜像中安装和配置需要的软件构建出来的
    • 自定义镜像mycentos
        1.编写
         A.Hub默认centos镜像


      默认centos

         B.编写DockerFile文件

    FROM centos
    ENV mypath /tmp
    WORKDOR $mypath
    
    RUN yum -y install vim
    Run yum -y install net-tools
    
    EXPOSE 80
    CMD /bin/bash
    

       C.mycentos内容DockerFile
      2.构建:docker build -t 新镜像名字:TAG .
      3.运行:docker run -it 新镜像名称:TAG


    新构建的镜像支持vim和ifconfig并且登录目录在/tmp

      4.列出镜像的变更历史:docker history


    一层一层构建

    相关文章

      网友评论

          本文标题:DockerFile解析

          本文链接:https://www.haomeiwen.com/subject/kpwbtqtx.html