上次写了关于Dockerfile镜像精简之道之后,很多小伙伴找我问,dockerfile语法的一些东西,这边文章就介绍一下dockerfile语法吧

FROM

FROM是位于我们dockerfile命令的第一层,首先就会使用该命令。当然一个DokcerFile中存在多个镜像时,可以多次使用FROM命令

语法:

FROM  /FROM : //tag没有的话默认是latestFROM ubuntu

MAINTAINER

可以理解为作者信息和维护者信息

语法:

MAINTAINER dockeruser MAINTAINER dockeruser dockeruser@gmail.com

RUN

用来运行我们所需要的指令。该命令是构建容器时运行的命令以及提交命令行的结果,RUN命令是直接跟shell命令,在linux系统中默认 /bin/sh -C windows中默认是 cmd /S /C

语法:

RUN command RUN [“executable”,“param1”,“param2”] #函数调用 都一个参数类似可执行文件,后面是参数 使用exec 来执行的 总的来说命令较长可以使用  来换行。RUN [“/bin/bash”, “-c”, “echo hello”]。RUN apt-get update && apt-get install -y x11vnc xvfb firefox

CMD

CMD是启动容器时默认执行的命令。启动容器需要执行的参数,并且一个DockerFile文件中最好只有一个该命令参数。多个话会把最后一个作为最终的目标,参数执行与RUN 运行类似。引号要使用是双引号,原因是参数传递后docker用来解析为一个json array

1. CMD ["executable","param1","param2"]2. CMD ["param1","param2"]3. CMD command param1 param2

LABEL

构建生成的镜像的元数据标签,一个容器可以有多个LABEL文件。

例子参考:

LABEL multi.label1="value1" multi.label2="value2" other="value3"

EXPOSE

声明镜像内服务所需要监听的端口。暴露给外部使用。但是在使用的时候还需要加上-P 参数映射或者使用-p映射为指定端口

EXPOSE 22 EXPOSE 22 8080 9292 

ENV

功能为设置环境变量,可以让其他命令来使用此参数。并且还有使用docker inspect 查看这个环境变量值。

语法 :

1. ENV 2. ENV = ...ENV JAVA_HOME /path/java/src

在使用的时候就可以使用

ADD

复制命令,将文件复制到镜像中去,

语法:

1. ADD ...  2. ADD ["",... ""]

其中 src 可以使本地文件也可以是压缩文件还可以是url ,dest 是容器内部的绝对路径,也可以是相对于工作目录的相对路径。

ADD test relativeDir/ ADD test /relativeDirADD http://example.com/foobar /

如果是一个文件夹了,复制整个目录的内容,包括文件系统元数据

COPY

也是复制命令,不过该命令只能复制本地文件。

1. COPY ... 2. COPY ["",... ""]

ENTRYPOINT

用来指定镜像的默认入口,也是启动的默认命令。

语法:

1. ENTRYPOINT ["executable", "param1", "param2"]2. ENTRYPOINT command param1 param2

从命令来看与我们的CMD命令十分的相似,但是他们两者有不同的区别。

首先ENTRYPOINT不会被运行的command命令覆盖,CMD指定的命令会被覆盖

如果两者同时存在,当CMD命令不是一个完整的执行命令时,那么CMD的命令参数会被作为ENTRYPOINT的参数,只一个完整的命令时,谁在最后谁执行。

VOLUME

创建数据卷的挂载点,将容器内的文件或者其他容器中的文件挂载在该容器中。

语法:

VOLUME ["目录"]1. VOLUME ["/home/log/"]2. VOLUME /home/log3. VOLUME /home/log /home/db

需要使用数据进行持久化需要该操作。容器使用的是AUFS文件系统。容器关闭的时候数据会丢失,那么数据持久化 就需要使用挂载点来操作。还有一点需要注意的是该命令创建的挂载点是无法指定主机上的目录,自动生成的。

USER

用来指定运行容器时的用户名或者UID

1. USER daemo2. USER UID

WORKDIR

用来配置工作目录,对RUN,CMD,ENTRYPOINT,COPY,ADD生效,如果目录不存在会创建,也可以设置多次。切换目录的操作相当于是Linux系统中的cd

WORKDIR /home/ruiqiWORKDIR dataRUN pwdpwd执行的结果是//home/ruiqi/data当然如果存在环境变量的值也可以 解析环境变量ENV PATH /pathWORKDIR $PATH/ruiqiRUN pwd pwd 的显示结果是/path/ruiqi

ARG

用来指定一些参数信息。当然该参数可以被 build时使用 --build-arg user =asdasda 指定参数

语法:

ARG name = valueARG user = fruiqiARG passwd =12313

ONBUILD

当该镜像作为其他镜像的基础镜像时,所设定的命令才会执行。

语法:

ONBUILD [INSTRUCTION]比如 ONBUILD RUN ls 

STOPSIGNAL

容器退出的信号值,当容器退出的时候给系统发送什么样的指令

STOPSIGNAL signal

HEALTHCHECK

进行容器的健康检查。

语法有两种:

1. HEALTHCHECK [OPTIONS] CMD command2. HEALTHCHECK NONE

语法和c区别_dockerfile语法相关推荐

  1. MongoDB的查询语法和SQL的SELECT语法做对比

    2019独角兽企业重金招聘Python工程师标准>>> 对 数据库的查询是相当频繁的,而且很多特殊的需求我们都可以通过SQL查询语句构造出来.那么我们平时习惯的SELECT语法实现的 ...

  2. 语法和c区别_史冠新 | 汉语语法单位辨正

    教授点击上方"公众号"可以订阅哦 汉语语法单位辨正 作者:史冠新 青岛大学 国际教育学院教授 原文刊于<东方论坛>2020年第1期 摘要 句子的研究应该更加注重其动态性 ...

  3. 语法和c区别_【20200925】Python基本语法

    介绍 介绍 Python这种脚本语言福哥已经给大家介绍过了,现在童鞋们应该已经会安装python的开发环境了,接下来我们需要针对python语言进行一个系统的学习. 首先学习一门编程语言最先要学习的是 ...

  4. html和css之间有什么区别,html语法和css语法之间有什么区别

    区别:HTML由围绕内容的标签组成,例" 内容 ":而CSS由一条或多条声明和选择器组成,每条声明由一个属性和一个值组成,例"div{font-size:12px;}&q ...

  5. R语言构建仿真数据库(sqlite)并使用dplyr语法和SQL语法查询数据库、将dplyr语法查询语句翻译为SQL查询语句

    R语言构建仿真数据库(sqlite)并使用dplyr语法和SQL语法查询数据库.将dplyr语法查询语句翻译为SQL查询语句 目录

  6. python xpath语法-XPath语法和lxml模块(数据提取)

    XPath语法和lxml模块 XPath lxml库 1.什么是XPath? XPath (XML Path Language) 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素 ...

  7. python xpath语法-Python爬虫之XPath语法和lxml库的用法

    本来打算写的标题是XPath语法,但是想了一下Python中的解析库lxml,使用的是Xpath语法,同样也是效率比较高的解析方法,所以就写成了XPath语法和lxml库的用法 安装 为什么要用这个库 ...

  8. JS语法和CSS语法的对比

    JS的语法和CSS语法很像,也分为行内式.内部式和外部式 CSS和JS的行内式代码对比: <div style="color: red;" onclick="ale ...

  9. CSS语法和CSS优先级

    语法 层叠样式表( Cascading Stylesheet ,简称CSS ), 其基本目标是让浏览器以指定的特性去绘制页面元素,比如颜色,定位,装饰.CSS的语法反映了这个目标,由下面两个部分构建: ...

最新文章

  1. items属性的combo_【内存消耗问题】DataGridViewComboboxColoumn关于Items属性和DataSource属性的性能开销问题...
  2. java 读取url https_如何获取URL链接是http还是https
  3. mysql的repeat()函数
  4. 机器学习从零开始-Kaggle数据用PurePython实战
  5. Windows Mobile 6.0下实现自绘多种状态按钮(Win32) 续
  6. 有限元笔记06-三维实体单元
  7. 智算中心新基建 浪潮首发智算中心操作系统
  8. Mycat_MySql更新数据库失败 --read-only
  9. android 快传 源码_最新安卓仿茄子快传APP源码包括服务端源码Android开发快传类项目源码全套...
  10. 携号转网全面启动后,新诈骗套路也跟上了!一招教你识别!
  11. annotationprocessor 提示找不到类_StackOverflow上87万访问量的问题:什么是“找不到符号”?...
  12. 【项目实施随笔】销售和采购信息的打印
  13. SPSS中介效应分析(Process和mediate插件)
  14. 豆丁网word文档下载方法集锦
  15. 分享一款代码生成工具,可自定义模板生成不同的代码
  16. 目标检测:损失函数之SmoothL1Loss
  17. Substance Painter 创建头发实验
  18. 【面试官一定会问的几题】视觉过关挑战赛 - 附源码
  19. 到底有几个鸿蒙OS? 谈谈我眼里的鸿蒙操作系统
  20. 如何选择适合你的兴趣爱好(五十九),芭蕾舞

热门文章

  1. 记忆讲师石伟华微信公众号2017所有文章汇总(待更新)
  2. Redis进阶实践之二十 Redis的配置文件使用详解
  3. 自已开发完美的触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
  4. Abp Uow 设计
  5. 任意阶幻方(魔方矩阵)C语言实现
  6. 在Mono 2.8上部署ASP.NET MVC 2
  7. Java练习 SDUT-1586_计算组合数
  8. 锐动SDK应用于行车记录仪
  9. idea输入法候选区不跟随光标
  10. 使用Cross-Page Postback(跨页面提交)在页面间传递数据