(对docker感兴趣的朋友可以加我的微信ghostcloud2016,然后我把你加到我们的一个docker爱好者群组里面。)
https://docs.docker.com/engine/reference/builder/
docker可以通过dockerfile的指令来编译image,dockerfile的主要好处是可以通过极少的空间来动态构建一个镜像,但是对国内用户而言,通常是比较通过的,因为下载国外的资源都比较慢。
建立了dockerfile之后,进入到所在目录,然后执行docker build.
通过-f选项,可以指定 dockerfile:
通过-t选项可以为镜像添加一个tag:
build过程中,会一条一条的执行语句,比如:
指令是不区分大小写的,不过一般都使用大写来区分指令和参数。dockerfile的第一句指令,必须是'from',这个后面紧跟的是基础镜像名称。#可以用来注释。
环境变量指令是env,这个类似于编程语言的变量,只能在dockerfile中使用。例如:
其中支持变量应用的指令包括:
如果你的编译目录下有一些文件是不需要打包进image的,你可以使用该文件进行过滤。重要涉及的指令是add和copy。
或者
from指令指定了目标image的基础镜像。tag是某个特定版本的镜像, digest是最新引入的一种id,类似于唯一标示符。
这个字段一目了然,就是设置作者。
run包含两种格式:
run (shell格式,这种命令运行在shell中 /bin/sh -c)
run ["executable", "arg1", "arg2"] (exec格式) run指令可以执行任何命令,并在当前image的顶层添加一个文件层,并提交到新的image中。由此我们可以看出,每一个run指令都会新加一层文件系统,虽然这个并不占多少空间,不过还是推荐尽可能多的减少指令。因此我们可以使用\来做换行处理。
不换行形式:
exec模式: