社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
Dockerfile入门
Dockerfile由一条条命令语句构建,以#开头的语句行为注释,其基本结构可分为四个部分。
1. 基础镜像:由FROM语句组成,eg: `FROM centos`
2. 维护者信息:由MAINTAINER语句组成, eg: `MAINTAINER peter_xizi 591838169@qq.com`
3. 镜像操作指令:由一系列指令组成,下面列出最基本的指令
`RUN <COMMAND>` shell中执行 or `RUN [ COMMAND, PARAM1, PARAM2, PARAM3,xx]` 其他类型的终端中执行 执行某些命令或运行某些程序
·EXPOSE <PORT1> [<PORT2>,<PORT3> ...] · 暴露容器端口
· ENV <KEY> <VALUE> · 设置容器的环境变量
· ADD <SRC> <DEST> · 将文件拷贝到容器,如果文件源是一个tar文件将拷贝到容器内自动解压为目录
·COPY <SRC> <DEST>· 将文件拷贝到容器
·ENTRYPOINT COMMAND PARAM1 PARAM2...· shell中执行或`ENTERPOINT [COMMAND PARAM1 PARAM2... ]` 其他类型的终端中执行, 设置容器启动后的执行命令
4. 容器启动时的执行命令
`CMD <COMMAND>` shell中执行命令 或 `CMD [ COMMAND ] ` 其他类型的终端中执行命令
Note:
大家可能会困惑有三种方法执行命令,RUN,ENTERPOINT和CMD指令。
RUN命令是在构建镜像的过程中执行的,在容器创建之前完成的。
CMD命令是利用镜像创建容器之后启动容器时的命令,但是, 如果利用镜像创建容器时指定了命令,会覆盖Dockerfile中指定的CMD命令。
ENTERPOINT命令也是利用镜像创建容器之后启动容器时的命令,不同之处在于,如果利用镜像创建容器时指定了命令,该命令将会作为ENTERPOINT命令的参数
利用Dockerfile构建镜像:进入Dockerfile所在的目录,运行 ·docker build -t=<tagName> .·命令, 其中最后的点号表示Dockerfile所在的目录
利用Dockerfile建构Openresty镜像
要求: Openresty需要使用lua脚本进行认证,同时设置nginx的日志格式,并借助filebeat将nginx日志传递给logstash(也可以是ElasticSearch)
整个Dockerfile的结构应该是
FROM <base image>
MAINTAINER xxx xxx.mail
<commands to install/config nginx, including lua configuration>
<commands to install filebeat>
RUN xxxx
为了简便起见,我们可以先将需要的安装文件和配置文件编辑好,使用RUN COPY xxx命令来拷贝替换原有的文件来实现配置
Dockerfile文件
# This dockerfile uses the centos image
# VERSION 1.0
FROM centos
# Maintainer: xizi <591838169@qq.com> (@shuangxi)
MAINTAINER xizi 591838169@qq.com
# Commands install openresty and its dependency
RUN mkdir -p /openresty/logs
COPY /tools/ /openresty/
# Commands to install openresty and its dependency
RUN yum install -y perl readline-devel pcre-devel openssl-devel gcc make
RUN cd /openresty && tar -zxvf openresty-1.9.7.3.tar.gz && cd openresty-1.9.7.3 && ./configure && make && make install
RUN cd /usr/local/bin && ln -s /usr/local/openresty/nginx/sbin/nginx nginx
RUN cp -f /openresty/nginx.conf /usr/local/openresty/nginx/conf/ && cp /openresty/auth.lua /usr/local/openresty/nginx/conf/
RUN cp -f /openresty/http_headers.lua /usr/local/openresty/lualib/resty/ && cp /openresty/http.lua /usr/local/openresty/lualib/resty/
# Commands for filebit
RUN rpm -vi /openresty/filebeat-1.2.2-x86_64.rpm
RUN cp -f /openresty/filebeat.yml /etc/filebeat/
# Commands when creating a new container:starting filebeat and openresty
RUN cd /openresty && chmod +x startNginx.sh
CMD /openresty/startNginx.sh
startNginx.sh
#!/bin/sh
#commands to generate nginx config file
......
#commands to start filebeat and nginx
filebeat -e -c /etc/filebeat/filebeat.yml &
nginx &
sh
本文链接: http://blog.csdn.net/musa875643dn/article/details/51635756
欢迎转载,转载请指明出处。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!