Docker Dockerfile(没写完)
Dockerfile是一个用来构建镜像文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
使用Dockerfile定制镜像
定制一个nginx镜像(构建好的镜像内会有一个/user/share/nginx/html/index.html文件)
在一个空的目录下,新建一个名为Dockerfile文件,并在文件内添加以下内容:
FROM nginx
RUN echo '这是一个本地构建的nginx镜像' > /user/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的指令每执行一次都会在docker上新建一层,所以过多无意义的层会造成镜像膨胀过大。例如:
FROM centos
RUN yum -y install wget
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN tar -xvf redis.tar.gz
以上会创建三层镜像,可简化为以下格式:
FROM centos
RUN yum -y install wget
&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
&& tar -xvf redis.tar.gz
如上,以&&符号连接命令,这样执行后,只会创建1层镜像。
开始构建镜像
在Dockerfile文件的存放目录下,执行构建动作。
以下实例,通过目录下的Dockerfile构建一个nginx:v3(镜像名称:镜像标签)
docker build -t nginx:v3 .
注:最后的.
代表本次执行的上下文路径。
上下文路径
docker build -t nginx:v3 .
上下文路径是指docker在构建镜像,有时候想要使用到本机的文件(比如复制),docker build 命令得知这个路径后,会将路径下的所有内容打包。
解析:由于docker的运行模式C/S。我们本机是C,docker引擎是S。实际的构建过程是在docker引擎下完成的,所以这个时候无法用到我们本机的文件。这就需要把我们本机的指定目录下的文件一起提供给docker引擎使用。
指令详解
COPY
复制指令,从上下文目录中复制文件或者目录到容器里指定路径。
格式:
COPY [--chown=<user>:<group>] <源路径>...<目标路径>
[--chown=
例如:
COPY hom* /mydir/
COPY hom?.txt /mydir/