Dockerfile 语法详解

Dockerfile 语法详解

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

  • 使用docker build 构建镜像
  • docker build -f 可以指定具体的dockerfile文件
FROM centos
MAINTAINER xianchao
RUN rm -rf /etc/yum.repos.d/*
COPY Centos-vault-8.5.2111.repo /etc/yum.repos.d/
RUN yum install wget -y
RUN yum install nginx -y
COPY index.html /usr/share/nginx/html/
EXPOSE 80
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]

#构建镜像
docker build -t="dockerfile/test-cmd:v1"
#运行容器
docker run -p 80 --name cmd_test2 -d dockerfile/test-cmd:v1

语法

  • FROM。基础镜像,必须是可以下载下来的,定制的镜像都是基于FROM 的镜像,这里的centos就是定制需要的基础镜像。后续的操作都是基于centos镜像。

  • MANTAINER。指定镜像的作者信息

  • RUN。指定在当前镜像构建过程中要运行的命令包含两种模式:

    1. shell。 RUN 。 例:RUN echo hello
    2. exec。 RUN [“executable”, “paraml”, “param2”]。例: RUN [“/bin/bash”, “-c”, “echo hello”],等价于 /bin/bash -c echo hello
  • EXPOSE。仅仅只是声明端口。格式: EXPOSE <端口1> [<端口2>…]

    ​ 作用:

    1. 帮助镜像使用者理解景象服务的守护端口,以方便配置映射。
    2. 在运行时使用随机端口映射时,也就是docker run -p 时, 会自动随机映射EXPOSE端口
    3. 可以是一个或者多个端口,也可以指定多个EXPOSE
  • CMD。类似于RUN指令,用于运行程序,但二者运行的时间点不同:

    1. CMD在docker run 时运行。
    2. RUN是在docker build 构建镜像时运行

    CMD [“/usr/sbin/nginx”, “-g”, “daemon off;”]

  • ENTERYPOINT。类似CMD指令,用于传参。但不会被docker run 的命令行参数指定的指令所覆盖。所以ENTERYPOINT一般传定参,CMD一般传变参

FROM nginx
ENTERYPORINT ["nginx", "-c"] #定参
CMD ["/etc/nginx/nginx.conf"] #变参
  • COPY。复制命令。 格式:COPY [–chown=:] …

    可以使用通配符。满足go语言的表达方式。

    1. COPY hom* /mkdir
    2. COPY hom?.txt /mkdir
  • ADD。拷贝的另一种方式。格式:ADD …

    优点:再执行<源文件>为tar压缩文件的话,压缩格式为gzip,bzip2以及xz的情况下,自动复制并解压到<目标路径>

    缺点:在不解压的前提下,无法复制tar压缩文件。会令镜像构建缓存失效,从而可以会令镜像构建缓慢。

  • VOLUME。定义匿名数据卷,在启动容器时忘记挂在数据卷,会自动挂在到匿名卷。格式:VLOLUME <路径>

    作用:1.避免重要的数据,因容器重启而丢失。2.避免容器不断变大

  • WORKDIR。指定工作目录。

  • ENV。设置环境变量。格式:ENV 或 ENV =

  • USER。制定执行后续命令的用户和用户组,只是用于切换后续命令执行的用户和用户组(因此改用户和用户组必须提前已经存在)。 格式:USER <用户名>[:<用户组>]

  • ONBUILD。触发器,就是在本次构建过程中不会执行该命令,但有新的dockerfile使用了之前构建的镜像时,才会触发。

  • LABEL。打标签。格式:LABEL

  • HEALTHCHECK。健康检查。

  • ARG。构建参数。与ENV作用一致,但ARF警队Dockerfile内有效,也就是说只有docker build的过程中有效,构建好的镜像内不存在此环境变量。构建命令docker build 中可以使用 --build-arg =来覆盖。格式:ARG <参数名>[=<默认值>]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值