• Dockerfile编写


    Dockerfile 是一个文本文件,其内包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建
    编写命令:

    1.FROM
    作用:声明使用哪个基础镜像
    格式:FROM IMAGE:TAG
    例: FROM nginx:latest
    2.LABEL
    作用:指明作者
    格式:LABEL author=tian
    3.ENV
    作用:声明环境变量
    格式:ENV KEY=VALUE
    例:ENV workdir=/var/www/html
    4.WORKDIR
    作用:声明工作目录
    格式:WORKDIR 工作目录
    例:WORKDIR $wrkdir
    WORKDIR /var/www/html
    WORKDIR /usr/local/apache2
    5.RUN
    作用:执行命令
    格式: RUN cmd && cmd2
    例:RUN yum install httpd -y && systemctl enable httpd
    相当的指令尽量放到一层
    6.EXPOSE
    作用:声明暴露的端口
    格式:EXPOSE 80 3306
    7.COPY
    作用:复制Dockerfile 工作目录下的文件至镜像内
    格式:COPY SRC DEST
    例:COPY psswd /etc/
    注意:源文件路径用相对路径 目标一般用绝对路径
    也可使用通配符
    源文件必须在工作目录或者工作目录的子目录中
    目标路径可以不存在,会自动创建
    如果源文件是一个目录,会自动递归复制目录下的文件到目标位置,目录本身不会被复制
    如果复制多个文件,或者源文件中用了通配符,那么目标路径必须以 / 为结尾
    8.ADD
    作用:复制
    格式:ADD SRC DEST
    例:ADD tian.tar.gz /etc/
    ADD 和COPY区别
    ADD会自动解压tar 包
    ADD 可以从网络上下载,但是这时候的tar包不会被解压
    9.VOLUME
    声明挂载点
    格式:VOLUME DEST
    例:VOLUME /var/www/html
    10.触发器 #当别人用你的镜像制作新的镜像时候会触发一个动作
    格式:ONBUILD 动作
    例:ONBUILD ADD https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/adwaita-qt-common-1.0-1.el7.x86_64.rpm /date
    11.CMD
    作用:执行命令 PID为1的指令
    格式:CMD 命令
    例:CMD nginx -g daemon off;
    CMD ["nginx","-g","daemon off;"]
    12.ENTRYPOINT
    作用:执行命令 PID 为1的指令
    格式:ENTRYPOINT 指令
    例:ENTRYPOINT nginx -q daemon off;
    ENTRYPOINT ["nginx","-g","daemon off;"]
    CMD ["-g","daemon off;"]
    ENTRYPOINT ["nginx"]

    # :指备注,注释
    指令参数,指令的大小写不敏感 #通常情况下一般使用大写
    第一个非注释行必须是FROM指令 #在没有注释的Dockerfile中。FROM必须是首行
    编写Dockerfile必须在一个目录下进行,这个目录称之为 工作目录(WORKSPACE)
    Dockerfile文件命令的首字母必须大写
    制作镜像所要用的文件必须放在工作目录或者工作目录的子目录之下,不能放在父目录
    可以通过隐藏文件 .dockeringnore 来指定不要放入到镜像中的文件,一行是一个文件,可以用通配符
    基于dockerfile做镜像,本质上还是基于一个现有的镜像做新镜像

    例:基于httpd镜像演示上面所有的指令

    第一步:创建Dockerfile工作目录
    mkdir test

    cd test
    vim Dockerfile

    #this is my first Dockerfile
    FROM httpd:latest
    LABEL author=tian
    ENV dir=/usr/local/apache2/htdocs
    WORKDIR $dir
    COPY test1 ./
    RUN touch test2
    ADD https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/adwaita-qt-common-1.0-1.el7.x86_64.rpm ./
    EXPOSE 80 3306
    VOLUME $dir
    CMD ["httpd-foreground"]

    第二步:基于dockerfile创建镜像
    docker build -t httpd:tian1 .

    第三步:基于新创建的镜像启动容器
    docker run -d httpd:tian1

  • 相关阅读:
    【iCore2双核心板视频教程】 AD模块(iM_AD_GP和iM_AD_SYNC)介绍及数据采集实验二
    【液晶模块系列基础视频】4.1.X-GUI图形界面库-画线画圆等函数简介
    【贴图】网友 snoopy 用《iHMI43 液晶模块》做的界面给大家看看
    【开放源代码】【谐波数据生成器】【上位机软件】(版本:0.00)
    【iCore2双核心板视频教程】 AD模块(iM_AD_GP和iM_AD_SYNC)介绍及数据采集实验一
    【新产品发布】【GK101 10MHz任意波发生器】
    【液晶模块系列基础视频】2.虚拟U盘
    【液晶模块系列基础视频】1.3.iM_TFT30模块简介
    【液晶模块系列基础视频】1.2.iM_RGB模块介绍
    【液晶模块系列基础视频】1.1.iHMI43模块介绍
  • 原文地址:https://www.cnblogs.com/t-ym/p/11837155.html
Copyright © 2020-2023  润新知