Centos7_Docker_05_dockerfile构建nginx镜像

dockerfile 能帮我们把制作镜像的过程给保留下来
一、先创建nginx dockerfile目录
mkdir -pv /docker/nginx
二、一键安装nginx脚本
cd /docker/nginx
2.1、准备好nginx安装脚本
vim nginx_install.sh
+++++++++++++++++++++++++ nginx_install.sh +++++++++++++++++++++++
#!/bin/bash
yum install wget gcc gcc-c++ vim net-tools pcre pcre-devel openssl openssl-devel -y
useradd -s /sbin/nologin nginx
cd /opt
wget http://www.xchinagroup.top/softdown/centos7/02_nginx/nginx-1.15.9.tar.gz
tar zxf nginx-1.15.9.tar.gz
cd nginx-1.15.9/
./configure --with-http_ssl_module --with-http_stub_status_module --with-stream --prefix=/usr/local/nginx/
make
make install
++++++++++++++++++++++++++++++++++++++++++++++
2.2、准备一个yum源文件(国内用163的yum源会更快一些) 在/docker/nginx/ 这个目录下面
vim CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=http://mirrors.163.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://mirrors.163.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

++++++++++++++++++++++++++++++++++++++++++++++++++
2.3、创建dockerfile 文件:在/docker/nginx/ 这个目录下面
vim /docker/nginx/Dockerfile
FROM centos7
MAINTAINER xc 331758730@qq.com
COPY nginx_install.sh /tmp/nginx_install.sh
COPY CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo
RUN sh /tmp/nginx_install.sh
RUN sed -i -e '/worker_processes/a daemon off;' /usr/local/nginx/conf/nginx.conf; \rm -rf /opt/nginx*

####:
/usr/local/nginx/sbin/nginx #默认是放在后台运行
由于docker里面的容器必须有一个永久执行的程序,所以需要放在前台执行
在配置文件里面加入一行 daemon off;
sed -i -e '/work_processes/a daemon off;' /usr/local/nginx/conf/nginx.conf
+++++++++++++++++++++++++++++++++++++++++++

2.4、Dockerfile的注意事项
++++++++++++++++++++++++++++++++++++
Dockerfile: 它是Docker镜像的描述文件,可以理解成火箭发射的A、B、C…的步骤。
Docker镜像: 通过Dockerfile做出来的,包含操作系统基础文件和软件运行环境,它使用分层的存储方式。
容器: 是运行起来的镜像,简单理解,Docker镜像相当于程序,容器相当于进程。
Dockerfile命名必须为Dockerfile”,Docker镜像构建时,会查找指定目录中的Dockerfile。
+++++++++++++++++++++++++++++++++++++++++++++++++++
FROM #代表自定义的镜像基于那个源镜像(centos7)
FROM 功能为指定基础镜像,并且必须是第一条指令。
MAINTAINER #代表维护者信息

COPY #把宿主系统的文件拷贝到镜像里面,
COPY <src>... <dest>
COPY的<src>只能是本地文件

RUN #在镜像里面运行的命令
多行命令不要写多个RUN,原因是Dockerfile中每一个指令都会建立一层. 多少个RUN就构建了多少层镜像,会造成镜像的臃肿、多层,不仅仅增加了构件部署的时间,还容易出错。RUN书写时的换行符是 \
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

三、使用dockerfile构建nginx镜像

cd /docker/nginx
docker build -t dfsc_nginx .



+++++++++++++++++++++++++++++++++++++++++++++++++++++++
注意最后有个点,代表使用当前路径的 Dockerfile 进行构建
docker build: 用 Dockerfile 构建镜像的命令关键词。
[OPTIONS] : 命令选项,常用的指令包括 -t 指定镜像的名字,
-t  dfsc_nginx  给新构建的镜像取名为 dfsc_nginx
-f 显示指定构建镜像的 Dockerfile 文件(Dockerfile 可不在当前路径下)如果不使用 -f,则默认当前路径下的名为 Dockerfile 的文件认为是构建镜像的 "Dockerfile" 。
++++++++++++++++++++++++++++++++++++++++++++++++++++



四、测试创建的nginx镜像是否正常

由于我们配置的nginx是前台永久运行的,可直接启动nginx进行测试
docker run -d dfsc_nginx /bin/bash -c '/usr/local/nginx/sbin/nginx'进入到dfsc_nginx 的/bin/bash

++++++++++++++++++++++++++ END +++++++++++++++++++++