美文网首页
dockerfile基础

dockerfile基础

作者: 裂开的汤圆 | 来源:发表于2020-05-15 11:11 被阅读0次

    dockerfile与容器、镜像之间的关系

    什么是dockerfile

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

    dockerfile构建镜像的过程

    1.手动编写一个dockerfile文件
    2.通过docker build命令,获得一个自定义的镜像

    dockerfile语法规则

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

    docker执行dockerfile的大致流程

    1.docker从基础镜像运行一个容器
    2.执行一条指令并对容器做出修改
    3.执行类似docker commit的操作提交一个新的镜像层
    4.docker再基于刚提交的镜像运行一个新容器
    5.执行dockerfile中的下一条指令直到所有指令全部执行完毕

    保留字指令

    # 用于指定当前镜像是基于哪个基础镜像,类似于子类继承父类
    FROM 基础镜像
    FROM scratch(最基础的镜像,类似于JAVA中的Object类)
    
    # 声明镜像维护者的姓名和邮箱地址
    MAINTAINER 姓名 邮箱
    MAINTAINER The CentOS  Project <cloud-ops@centos.org>
    
    # 镜像构建时需要运行的linux命令
    RUN linux命令
    RUN useradd -r wb
    
    # 绑定端口
    EXPOSE 8080
    
    # 指定在容器创建后,终端默认登陆进来的工作目录,一个落脚点
    WORKDIR 容器路径
    WORKDIR /var/data
    
    # 设置环境变量,下面指定的变量MY_PATH可以在后续的任何RUN指令中使用,使用方式如 WORKDIR $MY_PATH,需要通过美元符号进行引用。
    ENV MY_PATH /usr/test
    
    # 将宿主机目录下的文件或目录拷贝到镜像中
    # ADD和COPY的区别在于,ADD命令会自动处理URL和解压tar压缩包,而COPY是直接将文件拷贝,不进行处理
    COPY 源路径 目标路径
    
    # 指定容器数据卷,下面的路径是容器路径,对应的宿主机路径会由docker进行分配
    VOLUME ["/dataVolume1", "/dataVolume2"]
    
    # 指定一个容器启动时要运行的命令
    # Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换
    CMD /bin/bash
    
    # 指定一个容器启动时要运行的命令
    # ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数
    # ENTRYPOINT不会被docker run之后的参数替换,而是追加参数
    ENTRYPOINT 
    
    #  当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发。
    ONBUILD 
    

    相关文章

      网友评论

          本文标题:dockerfile基础

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