dockerfile
使用dockerfile定制镜像
下面先来尝试一个nginx镜像(构建好的镜像内会有一个 /usr/share/nginx/html/index.html 文件)
空目录下新建一个名为Dockerfile的文件,并且添加以下内容
1 | FROM nginx |
FROM:定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像。后续的操作都是基于 nginx。
RUN:用于执行后面跟着的命令行命令。有以下俩种格式:
1 | RUN 命令行命令 |
exec格式
1 | RUN ["可执行文件","参数1","参数2"] |
dockerfile的指令每执行一次都会在docker上新建一层,所以过多无意义的层,会造成镜像过度膨大,比如
1 | FROM centos |
以上会创建3层镜像,可以简化为以下形式
1 | FROM centos |
这样只会创建一层镜像。
开始构建镜像
在dockerfile文件的存放目录下,执行构建动作。
比如构建一个nginx:v3
1 | docker build -t nginx:v3 . |
.是指上下文路径,是指docker在构建镜像时有时候想要使用到本机文件(比如复制),docker build得知这个路径后,会将路径下的所有内容打包。
注:docker的运行模式是c/s,docker是s,我们是c,实际的构建过程是在docker引擎下完成的,所以这个时候无法用到我们本机的文件,这就需要把我们本机的指定目录下的文件一起打包提供给docker使用。
指令详解:
COPY
复制指令,从上下文目录中复制文件或者 目录 到 容器里指定路径
1 | COPY 源路径1 源路径2 目标路径 |
比如
1 | COPY hom?.txt /mydir/ |
CMD
1 | CMD shell命令 |
ENTRYPOINT
类似cmd,但是不会被docker run的命令行参数指定的指令所覆盖。而且这些命令行参数会被当作参数送给entrypoint指定的程序,就像上面cmd第三行。
1 | FROM nginx |
1.不传参运行
1 | docker run nginx:test |
容器会默认运行以下命令
1 | nginx -c /etc/nginx/nginx.conf |
2.传参运行。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment

