天天看点

Docker基础之十一: 镜像操作(Dockerfile)Docker镜像(Dockerfile)

(对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模式: