zoukankan      html  css  js  c++  java
  • docker学习笔记-05:DockerFile解析

    一、DockerFile是什么

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

    2、构建三步骤:

    手动编写一个dockerfile文件,然后直接docker build命令执行,获得一个自定义的镜像,最后 docker run 创建一个容器实例。

    二、centos的DockerFile

    FROM scratch          # centos的祖先
    MAINTAINER The CentOS Project <cloud-ops@centos.org>        # 作者的名字和邮箱
    ADD c68-docker.tar.xz /         # centos压缩包
    LABEL name="CentOS Base Image" 
        vendor="CentOS" 
        license="GPLv2" 
        build-date="2016-06-02"
    
    # 默认的命令,所以在启动容器时可加可不加
    CMD ["/bin/bash"]

    三、DockerFile构建过程解析

    1、DockerFile内容基础知识:

    (1)每条保留字指令都必须为大写字母且后面要跟随至少一个参数

    (2)指令从上到下,顺序执行

    (3)#表示注释

    (4)每条指令都会创建一个新的镜像层,并对镜像进行提交

    2、docker执行DockerFile的大致流程:

    (1)docker从基础镜像运行一个容器

    (2)执行一条指令并同时对容器进行修改

    (3)执行类似docker commit的操作提交一个新的镜像层

    (4)docker再基于刚提交的镜像运行一个新容器

    (5)执行DockerFile中的下一条指令直到所有指令都执行完成

    3、从应用软件的角度来看,DockerFile、Docker镜像和Docker容器分别代表了软件的三个不同阶段

    • DockerFile是软件的原材料
    • Docker镜像是软件的交付品
    • Docker容器则可以认为是软件的运行态

      DockerFile面向开发,Docker镜像成为交付标准,Docker容器则涉及部署和运维,三者缺一不可。

    4、关系:DockerFile----build---->Docker镜像-----run---->Docker容器

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

    1、FROM  基础镜像,也就是当前新镜像是基于哪个基础镜像的

    2、MAINTAINER  镜像作者的姓名和邮箱地址

    3、RUN  构建镜像的过程中执行一个具体的命令

    4、EXPOSE  当前容器实例对外暴露的端口

    5、WORKDIR  制定在创建容器后,终端默认登录的进来工作目录

    6、ENV  用来在构建镜像过程中设置环境变量  如:ENV MY_PATH /usr/mytest  变量名为 MY_PATH,变量值为 /usr/mytest

    7、ADD  将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包

    8、COPY  类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中<原路劲>的文件/目录复制到新的一层的镜像内的<目标路劲>位置  

    9、VOLUME  容器数据卷,用于数据保存和持久化工作

    10、CMD  指定一个容器启动时要运行的命令,DockerFile中可以有多个CMD指令,但只有最后一个生效。且如果docker run 后面有命令参数,那么CMD的会被docker run后面的替换掉

    11、ENTRYPOINT  同CMD类似,也指定一个容器启动时要运行的命令,但不同在于,如果docker run 后面由命令参数,那么不会覆盖,而是追加

    12、ONBUILD  当构建一个被继承的DockerFile时运行命令,父镜像在被子镜像继承后,父镜像的ONBUILD被触发。

  • 相关阅读:
    vscode如何将less编译到指定css目录中
    md文档的书写《二》
    关于页面scroolTop的获取
    git学习 c的某位老哥的,(侵删)
    学习git使用网址
    git,github,gitlab,码云的区别
    Git的基本使用
    php_review_day1
    shell脚本编程基础-构建基本脚本
    Linux基本命令
  • 原文地址:https://www.cnblogs.com/Luv-GEM/p/11493930.html
Copyright © 2011-2022 走看看