以定制一个 nginx 镜像为例(构建好的镜像内会有一个 /usr/share/nginx/html/index.html 文件)
在一个空目录下,新建一个名为 Dockerfile 文件,并在文件内添加以下内容:
FROM nginx

RUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html
FROM:定制的镜像都是基于 FROM 的镜像,这里的 nginx 便是定制须要的根本镜像。后续的操作都是基于 nginx。
RUN:用于实行后面随着的命令行命令。有以下俩种格式:
shell 格式:
RUN <命令行命令>
# <命令行命令> 等同于,在终端操作的 shell 命令。
或者exec 格式:
RUN [\公众可实行文件\公众, \"大众参数1\"大众, \"大众参数2\公众]
# 例如:
# RUN [\"大众./test.php\"大众, \公众dev\"大众, \公众offline\公众] 等价于 RUN ./test.php dev offline
在 Dockerfile 文件的存放目录下,实行构建动作。
以下示例,通过目录下的 Dockerfile 构建一个 nginx:test(镜像名称:镜像标签)。
# docker build -t nginx:test .
.表示高下文路径
高下文路径,是指 docker 在构建镜像,有时候想要利用到本机的文件(比如复制),docker build 命令得知这个路径后,会将路径下的所有内容打包。
解析:由于 docker 的运行模式是 C/S。我们本机是 C,docker 引擎是 S。实际的构建过程是在 docker 引擎下完成的,以是这个时候无法用到我们本机的文件。这就须要把我们本机的指定目录下的文件一起打包供应给 docker 引擎利用。
如果未解释末了一个参数,那么默认高下文路径便是 Dockerfile 所在的位置。
把稳:高下文路径下不要放无用的文件,由于会一起打包发送给 docker 引擎,如果文件过多会造成过程缓慢。