镜像的定制实际上就是定制每一层所添加的配置、文件。Dockerfile
是一个文本文件,其内包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。
基本命令
例子:1
2FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
这里只介绍两个最基本的,还有很多,用到的时候再学习。
From
指定基础image,在其上进行定制,必须要有且是第一条指令。
Run
是用来执行命令行命令的。主要有两种格式:
- Shell
RUN <命令>
,就像直接在命令行中输入的命令一样。 - Exec
RUN ["可执行文件", "参数1", "参数2"]
,这更像是函数调用中的格式。
Union FS 是有最大层数限制的,所以别用太多Run命令建很多层,如果有多条命令要执行,使用 && 将各个所需命令串联起来。
Dockerfile 支持 Shell 类的行尾添加 \ 的命令换行方式,以及行首 # 进行注释的格式。
到此,要定制的内容就完成了,下面就是构建了。
构建
用 docker build 命令来构建镜像。
例子:1
2
3
4
5
6
7
8
9
10docker@default:~/myngix$ docker build -t nginx:v5 .
Sending build context to Docker daemon 2.048kB
Step 1/2 : FROM nginx
---> 9e7424e5dbae
Step 2/2 : RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
---> Running in 0f77e86fba64
---> d725428dfdad
Removing intermediate container 0f77e86fba64
Successfully built d725428dfdad
Successfully tagged nginx:v5
1 | docker@default:~/myngix$ docker image ls -a |