一、前言


 看了很多人的dockerfile,都是长篇大论,解释的又很少,对于初学者来说根本不知道指令的意思,哪怕知道指令的意思,也不知道指令后面配置的一大串东西来自于哪里,而这一大串又无需去记忆,例如:

docker 编辑nginx 怎么安装 vi dockerfile制作nginx_nginx

开头的RUN指令都能根据dockerfile的指令说明可以知道该指令是干嘛用的,但是后面这一串这么长的东西又是来自于哪里?

所以在编写dockerfile之前,你必须懂的nginx(该文章是基于dockerfile创建nginx镜像)在linux上的安装流程,否则,需要安装什么依赖等都不知道,就无从下手。

 

二、准备


在百度上,可以搜索到很多在linux上安装nginx的教程,这里给出一个安装教程地址:http://www.runoob.com/linux/nginx-install-setup.html。

在尝试着在自己的linux(非docker)机器上尝试的安装一遍nginx后,可以总结出大概这么几个流程(后面的dockerfile可以根据此流程来编写):

1.基于linux系统的docker容器是精简版的linux系统,里面很多命令等都没安装,比如vim等,所以我们安装软件时,都需要提前安装依赖包、工具等,比如nginx安装时依赖编译工具和相关库文件:



yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel



2.必要的安装依赖pcre

安装流程:解压,进入解压目录,运行make编译命令,最后运行make install命令

3.最后就是安装nginx

安装流程:解压,进入解压目录,最后是编译安装

 

三、编写dockerfile


该dockerfile是根据上方的流程一步步编写下来,完全可以对照在linux上的安装流程:



#base image
FROM centos

#MAINTAINER,this dockerfile creater
MAINTAINER loose@docker.com

#拷贝宿主机nginx-1.12.2.tar.gz到/usr/local/nginx目录
ADD nginx-1.12.2.tar.gz /usr/local/nginx

#拷贝宿主机pcre-8.35.tar.gz到/usr/local/pcre目录
ADD pcre-8.35.tar.gz /usr/local/pcre

#安装编译工具及库文件
RUN yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

#进入pcre解压目录
WORKDIR /usr/local/pcre/pcre-8.35

#开始安装并编译pcre
RUN ./configure
RUN make && make install

#安装nginx,首先进入nginx目录
WORKDIR /usr/local/nginx/nginx-1.12.2

#开始安装并编译nginx,注意pcre这里指定的是绝对路径
RUN ./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/pcre/pcre-8.35 && make && make install

#添加nginx组和账户
RUN /usr/sbin/groupadd nginxGroup
RUN /usr/sbin/useradd -g nginxGroup nginxAdmin

#指定端口
EXPOSE 80



当然,这只是个入门,设计到的指令比较少,比如CMD、ENV、VOLUME就没有,后面的文章会一个个通过案例展示出来。

 

四、通过dockerfile构建镜像


 执行命令:



docker build -t nginx:v1.0 .



说明:nginx为dockerfile构建的镜像名称,v:1.0为构建镜像TAG,最后面的 . 代表的是相对路径的当前目录,如果需要全路径则为/home/env/(Dockerfile文件目录)

build完毕后,我们来查看镜像列表:

docker 编辑nginx 怎么安装 vi dockerfile制作nginx_运维_02

最后,根据该镜像,启动容器,并在网页上访问nginx:

docker 编辑nginx 怎么安装 vi dockerfile制作nginx_操作系统_03

docker 编辑nginx 怎么安装 vi dockerfile制作nginx_json_04

docker 编辑nginx 怎么安装 vi dockerfile制作nginx_操作系统_05