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
目录结构
转载于:https://blog.51cto.com/11571922/2338236