docker提供dockerfile技术用来构建自定义镜像,dockerfile能帮我们把制作镜像的过程给保留下来,但制作起来相对复杂,需要把一切都准备好才能制作镜像。本实例以centos7为基础镜像构建

 

1.  先创建nginx dockerfile目录

mkdir -pv /docker/nginx

 

2.  编写nginx安装脚本  

vim /docker/nginx/install.sh

yum install -y wget tar gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel

 

cd /usr/local/src

wget 'http://nginx.org/download/nginx-1.12.2.tar.gz'

tar -zxvf nginx-1.12.2.tar.gz

cd nginx-1.12.2

./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-stream  --with-stream_ssl_module

make

make install

exit 0

 

3.  nginx前台运行说明

/usr/local/nginx/sbin/nginx                                   #默认nginx是放在后台运行

sed -i -e '/worker_processes/a daemon off;' /usr/local/nginx/conf/nginx.conf   #使用daemon off配置让nginx在前台运行

 

  4. 编辑dockerfile文件

   vim /docker/nginx/Dockerfile

#/docker/nginx/CentOS-Base.repo 由于在容器里面跑yum安装经常出问题,因此使用163源去替换系统自带的yum源

 

FROM centos7

MAINTAINER awei test@163.com

COPY install.sh /tmp/install.sh

COPY CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo

RUN sh /tmp/install.sh

RUN sed -i -e '/worker_processes/a daemon off;' /usr/local/nginx/conf/nginx.conf; \rm -rf /usr/local/src/*


注释:dockerfile的注意事项

FROM      #代表自定义的镜像基于centos7

MAINTAINER  #代表维护者信息

COPY      #把宿主系统的文件拷贝到镜像里面

RUN       #在镜像里面运行命令

         #安装完后记录删除源码包等,预防镜像过大

 

5.  使用dockerfile构建nginx镜像

cd /docker/nginx

docker build -t nginx .


查看nginx镜像的详细信息

docker inspect nginx

 

6.  启动容器进行测试,由于nginx是前台永久运行的,可直接启动nginx进行测试

docker run --name nginx -d nginx /bin/bash -c '/usr/local/nginx/sbin/nginx'

 

7.  测试nginx镜像是否正常

docker exec -it nginx /bin/bash

 

8.  设置镜像内的yum源 

vim CentOS-Base.repo

[base]

nme=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


目录结构

image.png