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

构建三步骤:1、编写dockerfile文件;2、docker build;3、docker run

dockerfile内容基础知识: 

1、每条保留字指令必须为大写字母且后面要跟随至少一个参数;

2、指令安装从上到下,顺序执行;

3、#号表示注释;

4、 每条指令都会创建一个新的镜像层,并对镜像进行提交;

dockerfile执行的大致流程:

1、docker从基础镜像运行一个容器;

2、执行一条指令并对容器做修改;

3、执行类似docker commit的操作提交一个新的镜像层;

4、docker再基于刚提交的镜像运行一个新的容器;

5、执行dockerfile中的下一条指令直到所有指令都执行完成。

总结:从应用软件的角度来看,dockerfile,docker镜像与docker容器分别代表软件的三个不同阶段:

a) dockerfile是软件的原材料;

b)docker镜像是软件的交付品

c)docker容器则可以认为是软件的运行态。

dockerfile面向开发,docker镜像成为交付标准,docker容器则涉及部署与运维,三者缺一不可,合力充当docker体系的基石。

所以,以后开发向运维工程师就不再交部署文件了,而是交镜像。运维工程师拿到镜像,生成容器运行就可以了。

dockerfile保留指令:

1、FROM

  FROM:基础镜像,当前的新镜像基于哪个镜像

2、MAINTAINER

  MAINTAINER:镜像维护者的姓名和邮箱地址

3、RUN

  RUN:容器构建时需要的运行的命令

4、EXPOSE

  EXPOSE:当前容器对外暴露的端口号

5、WORKDIR

  WORKDIR:指定容器在创建后,终端默认登录进来的工作目录,一个落脚点

6、ENV

  ENV:用来在构建镜像过程中设置环境变量

  举例:ENV MY_PATH /usr/mytest

  ENV这个环境变量可以在后续的任何RUN指令中使用,这就如同在命令前指定了环境变量前缀一样;也可以在其他指令中直接使用这些环境变量,比如WORKDIR $MY_PATH

7、ADD 

ADD:将宿主机目录下的文件拷贝到镜像里面并且ADD命令会自动处理URL和解压tar压缩包

8、COPY

COPY:类似ADD,拷贝文件和目录到镜像中,但是它只是拷贝,不会自动处理URL和解压tar压缩包。COPY将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置。

它的使用方法有两种:COPY src test和COPY ["src","dest"]

9、VOLUME 

VOLUME:容器数据卷,用于数据保存和持久化工作

10、CMD

CMD:指定一个容器启动时要运行的命令。dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换。

CMD指令的格式和RUN类似,也是两种格式:

a) shell格式:CMD <命令>

b) exec格式:CMD ['可执行文件',‘参数1’,‘参数2’....]

c) 参数列表格式:CMD ['参数1',‘参数2’...],在指定了ENTRYPOINT指令后,用CMD指定具体的参数

11、ENTRYPOINT

ENTRYPOINT:指定一个容器启动时要运行的命令。ENTRYPOIT的目的和CMD一样,都是在指定容器启动程序及参数。

区别:CMD和ENTRYPOINT都是指定一个容器启动时要运行的命令,但是 如果dockerfile中可以有多个CMD指令,只有最后一个生效 ,CMD会被docker run之后的参数替换 ;而有多个ENTRYPOINT指令,每个指令都生效,这就是CMD和ENTRYPOINT的区别。

12、ONBUILD(触发器) 

当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后,父镜像的onbuild被触发

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28916011/viewspace-2213324/,如需转载,请注明出处,否则将追究法律责任。

docker 13 dockerfile的保留字指令的更多相关文章

  1. Docker 13 Dockerfile

    参考源 https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0 https://www.bilibili.com/vid ...

  2. centos7下安装docker(dockerfile常用的指令)

    FROM:指定ase镜像 MAINTAINER:设置镜像作者,可以是任意字符 COPY:将文件从build  context复制到镜像.支持两种形式:1.COPY src dest 2.COPY [“ ...

  3. 6、DockerFile解析:三步走、保留字指令

    1.dockerfiel是什么 1.是什么 Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本. 2.构建三步骤 编写Dockerfile文件 docker bu ...

  4. docker之Dockerfile指令介绍

    Docker通过对于在Dockerfile中的一系列指令的顺序解析实现自动的image的构建 通过使用build命令,根据Dockerfiel的描述来构建镜像 通过源代码路径的方式 通过标准输入流的方 ...

  5. docker和Dockerfile

    目录: 1.docker为什么会出现? 2.docker的理念 3.容器化技术 4.docker三要素 5.docker安装 6.docker帮助命令 7.Docker阿里云镜像加速器配置. 8.do ...

  6. docker:Dockerfile构建LNMP平台

    docker:Dockerfile构建LNMP平台   1.dockerfile介绍  Dockerfile是Docker用来构建镜像的文本文件,包含自定义的指令和格式.可以通过docker buil ...

  7. Dockerfile介绍及指令详情

    Dockerfile简介:   镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么哪些无法重复的问题.镜 ...

  8. Docker学习——Dockerfile

    上一篇我们讲了docker的基本使用,掌握了前一篇,docker使用基本不成问题,但是要是你学习了Dockerfile,你会发现它使用起来有多方便了.项目最终部署时,我们希望docker容器打开时项目 ...

  9. Docker学习—DockerFile

    前言: 上一篇文章简单使用了docker 拉取镜像.启动容器.编译镜像:其中编译镜像时,使用到了Dockerfile,那么接下来我们就详细的来说说Dockerfile DockerFile是什么: D ...

随机推荐

  1. 8;XHTML 框架

    1.多窗框的基本结构 2.嵌套多窗体设置 3.多框架与超链接 4.悬浮窗体的设置 浏览器视窗本身就是一个框架,网页就是显示在该单 一的框架内,本章将介绍另一种网页呈现的方式,那就是可将原先单一的框架分 ...

  2. js 格式化数字(每三位加逗号)

    // 方法一 unction toThousands(num) { var result = [ ], counter = 0; num = (num || 0).toString().split(' ...

  3. Android 布局巧用之include、merge、ViewStub

    原文链接:https://mp.weixin.qq.com/s/bTA2gztUzqvqER2rz56RRQ 相信大家经常听到include.merge.ViewStub这样的标签,官方也提到这三种布 ...

  4. 短连接、长连接与keep-alive

    短连接与长连接 通俗来讲,浏览器和服务器每进行一次通信,就建立一次连接,任务结束就中断连接,即短连接.相反地,假如通信结束(如完成了某个HTML文件的信息获取)后保持连接则为长连接.在HTTP/1.0 ...

  5. (后端)安装mongodb以及设置为windows服务 详细步骤(转)

    1.在data文件夹下新建一个log文件夹,用于存放日志文件,在log文件夹下新建文件mongodb.log 2.在 D:\mongodb文件夹下新建文件mongo.config,并用记事本打开mon ...

  6. [20170612]FOR ALL COLUMNS SIZE repeat(12c).txt

    [20170612]FOR ALL COLUMNS SIZE repeat(12c).txt --//昨天看了https://jonathanlewis.wordpress.com/2017/06/0 ...

  7. App分享之微信微博等各个社交平台的分享授权规则和常见问题

    一.新浪微博分享规则 新浪微博支持分享类型: 应用内分享也就是网页分享支持: 文字,文字+图片,要分享链接需要链接添加在text里分享 客户端分享支持:文字,图片,文字+图片,图片+文字+链接 参数说 ...

  8. 便捷的方式在手机上查看Unity3D的Console Log(调试信息 日志)

    Logs Viewer 功能描述 Using this tool you can easily check your editor console logs inside the game itsel ...

  9. MySQL常用命令(一)

    (1)库的基础操作 查看已有库: show databases; 创建库(制定默认字符集): ccreate database 库名 default charset=utf8; 查看创建库的语句: s ...

  10. C# -- 使用Aspose.Cells创建和读取Excel文件

    使用Aspose.Cells创建和读取Excel文件 1. 创建Excel Aspose.Cells.License li = new Aspose.Cells.License(); li.SetLi ...