语法和c区别_dockerfile语法

上次写了关于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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461364.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Dojo学习笔记(三):类化JavaScript

dojo/_base/declare模块是Dojo Toolkit中创建类的基础。declare支持多重继承,这使得开发者能够编写更加灵活的代码并避免代码多次重写。Dojo.Dijit和Dojox模块都使用declare,在这篇文章中,你就知道为什么你也要这样做了。 准备学习 在开始学习…

联想ThinkCentre M8400t-n000等高配电脑重装成xp蓝屏0xc000007b代码

联想ThinkCentre M8400t-n000等高配电脑重装成xp蓝屏0xc000007b代码配置方法:开机进入bios设置界面 ,然后把那个硬盘接口从SATA设置成IDE模式。SATA比IDE高级,具有更高的硬盘传输速度,但是早先XP出的时候还不支持SATA&…

Linux进程编程4——父子进程对文件的操作

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 1、子进程继承父进程中打开的文件 (1)上下文:父进程先用open打开一个文件得到fd,然后再fork创建子进程,之后在父子进程中各自write向fd中写入内容。…

BIOS误删win10引导 delete boot option如何恢复

BIOS误删win10引导 delete boot option如何恢复 其他系统也可以用来参考,解决只是将原来的配置加回去而已 倒了血霉 说个原则,希望大家在发现错误之后第一时间是保护现场不要乱动,如果在百度或别的地方找到了解决方案,先百度一下这个解决方案是否可行,不然不要轻易尝试,这些解决…

fir fpga 不同截止频率_一种新的FIR滤波器系数量化方法

相对于模拟滤波器,数字滤波器具有高精度、高可靠性、可编程改变滤波特性、便于集成等一系列优点,并且理论上可实现近似理想频率特性的滤波性能。经典的数字滤波器主要包括有限脉冲响应(Finite Impulse Response,FIR)滤波器和无限脉冲响应(Inf…

How to: Build a Client Application

转载于:http://msdn.microsoft.com/en-us/library/y6dc64f2(vvs.80).aspx 转载于:https://www.cnblogs.com/aran/archive/2013/02/22/2922438.html

Linux文件和目录权限

前言文件系统权限可以用‘ll’或者‘ls -l’查看第一位表示文件类型,后面9位三三一组分别表示属主,属组,其他用户权限其中r对文件表示可读权限,如cat,tail,more,less等对目录表示可以使用ls命令…

Linux进程编程3——守护进程

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 一、守护进程介绍 1、进程查看命令ps ps -ajx偏向显示各种有关的ID号;ps -aux偏向显示进程各种占用资源 2、(用于向进程发送信号的)指令kill “kill -信号编号 进程ID”&a…

JSONObject,JSONArray,对象,数组互相转化

json类型对象转化成对象类型 JSONObject.toJavaObject(jsonObj, Object.class)json类型对象转化为List类型 JSONArray.parseArray(JSONObject.toJSONString(object, Object.class))对象转化成String类型的Json数据 JSONObject.toJSONString(object)转载于:https://www.cnblogs.…

pandas用众数填充缺失值_python数据分析包|Pandas-02之缺失值(NA)处理

本篇详解pandas中缺失值(Missing data handling)处理常用操作。缺失值处理常用于数据分析数据清洗阶段;Pandas中将如下类型定义为缺失值:NaN: ‘’, ‘#N/A’, ‘#N/A N/A’, ‘#NA’, ‘-1.#IND’, ‘-1.#QNAN’,‘-NaN’, ‘-na…

知识点滴:持久层,DAO,API,DAL,BLL,DLL,csproj,sln

知识点滴:持久层,DAO,API,DAL,BLL,DLL,csproj,sln 摘自: http://www.cnblogs.com/niuniu1985/archive/2009/12/10/1620918.html 知识点滴:持久层,DAO&#xf…

系统设计学习

2019独角兽企业重金招聘Python工程师标准>>> 这里原帖地址: http://www.mitbbs.com/article_t/JobHunting/32492515.html 以下为转载内容 我是分割线 稍微总结一下1. 入门级的news feedhttp://www.quora.com/What-are-best-practices-for-building-somethttp://w…

Linux进程编程5——进程间通信(IPC)概述

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 1、为什么需要进程间通信? (1)进程间通信(IPC) 指的是2个任意进程之间的通信。(2)同一个进程在一个地址空间中 同一个进程…

编码 括号_Java编码规范整理汇总

来源:博学谷 作者:照照在Java的入门过程中,我们首先要养成一个良好的编写代码习惯。那么,了解清楚Java的编码规范就显得尤为必要了。编码格式不仅仅是美不美观的问题。这里我们可以试想一下,如果在Java开发中编码不规范…

rabbitmq消息队列,消息发送失败,消息持久化,消费者处理失败相关

转&#xff1a;https://blog.csdn.net/u014373554/article/details/92686063 项目是使用springboot项目开发的&#xff0c;前是代码实现&#xff0c;后面有分析发送消息失败、消息持久化、消费者失败处理方法和发送消息解决方法及手动确认的模式 先引入pom.xml <!--rabbitmq…

人的幸福感取决于什么

1988年4月&#xff0c;霍华德金森24岁&#xff0c;是美国哥伦比亚大学的哲学系博士。他毕业论文的课题是《人的幸福感取决于什么》。为了完成这一课题&#xff0c;他向市民随机派发出了一万份问卷。问卷中&#xff0c;有详细的个人资料登记&#xff0c;还有五个选项&#xff1a…

基于nginx实现缓存功能及uptream模块详细使用方法

基于nginx实现缓存功能及uptream模块详细使用方法一般情况下&#xff0c;前端使用nginx做代理或7层负载并向后实现varish/squid做cache server的效果要好的多nginx与squid做缓存比较nginx比squid有着巨大的优势表现在&#xff1a;nginx是异步假如后端的web服务器&#xff0c;当…

linux中的信号1——进程如何处理信号?

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 一、信号概述 1、信号是内容受限的一种异步通信机制 &#xff08;1&#xff09;信号的目的&#xff1a;用来进程间通信&#xff08;IPC&#xff09;、进程和内核间的通信。 &#xff08;2&#xff…

单片机oled显示浮点数函数_问中文编程在单片机上实现一个电子时钟,总共有几步?...

首先介绍开发一下语言&#xff1a;mcuScript&#xff0c;他是一个支持同时支持中文编程和英文编程的弱数据类型的脚本语言。相关介绍可参考前面的两篇文章:彭贞&#xff1a;mcuScript一个洋名字的中文(汉语)编程语言&#xff0c;初体验​zhuanlan.zhihu.com彭贞&#xff1a;mcu…

RabbitMQ的消息确认机制

转&#xff1a;https://www.toutiao.com/a6583957771840913934/?tt_frommobile_qq&utm_campaignclient_share&timestamp1532999387&appnews_article&utm_sourcemobile_qq&iid39062783162&utm_mediumtoutiao_android 一&#xff1a;确认种类 RabbitMQ的…