手动制作nginx 镜像
手动制作nginx 镜像由于容器启动和运行过程中是直接使用了宿主机的内核,所以没有直接调用过物理硬件,所以也不会涉及到硬件驱动,因此也用不上内核和驱动,另外有内核的那是虚拟机Docker 制作类似于虚拟机的镜像制作,即按照公司的实际业务务求将需要安装的软件、相关配置等基础环境配置完成,然后将其做成镜像,最后再批量从镜像批量生产实例,这样可以极大的简化相同环境的部署工作,Docker 的镜像制作
·
手动制作nginx 镜像
由于容器启动和运行过程中是直接使用了宿主机的内核,所以没有直接调用过物理硬件,所以也不会涉及到硬件驱动,因此也用不上内核和驱动,另外有内核的那是虚拟机
Docker 制作类似于虚拟机的镜像制作,即按照公司的实际业务务求将需要安装的软件、相关配置等基础环境配置完成,然后将其做成镜像,最后再批量从镜像批量生产实例,这样可以极大的简化相同环境的部署工作,Docker 的镜像制作分为手动制作和自动制作(基于 DockerFile),企业通常都是基于 Dockerfile 制作精细。
1. 手动制作 yum 版 nginx 镜像
基于某个基础镜像之上重新制作,因此需要先有一个基础镜像,本次使用官方提供的 centos 7.6镜像为基础
1.1 基于官方镜像运行一个容器
docker pull centos:7.8.2003
docker run -it docker.io/centos:7.8.2003 /bin/bash
1.2 下载安装基本工具
进入容器后执行
yum install wget -y
cd /etc/yum.repos.d/
rm -rf ./*
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
1.3 yum 安装并配置 nginx
容器内执行
# 安装nginx
yum install nginx -y
#安装常用命令
yum install -y vim wget pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop
vim /etc/nginx/nginx.conf
#添加此行,关闭后台运行
daemon off;
自定义 web 页面
vim /usr/share/nginx/html/index.html
centos_yum_nginx
然后容器不用退出,可以开启另外一个窗口用于提交镜像
1.4 提交为镜像
docker commit 的用法
Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
Create a new image from a container's changes
Options:
-a, --author string Author (e.g., "John Hannibal Smith <hannibal@a-team.com>") # 作者的信息
-c, --change list Apply Dockerfile instruction to the created image #运行时的指令
-m, --message string Commit message #提交的信息
-p, --pause Pause container during commit (default true) #提交时暂停容器的运行
提交镜像
root@z2:~# docker commit -a "25958889@qq.com" -m "nginx yum v1" --change="EXPOSE 80 443" 4608fcda24bf centos-nginx:v1
sha256:3e4519d53230297616d4e3d40814174dc868ddcb8398a2fdc97cbce9fbbf402f
1.5 带 tag 的镜像提交
提交的时候标记 tag 号:
标记 tag 号,生产当中比较常用,后期可以根据 tag 标记创建不同版本的镜像以及创建不同版本的容器。
root@z2:~# docker commit -m "nginx image" 4608fcda24bf zt/centos-nginx:v1
sha256:4b83400f6ddb22f1bcd7e7840f7085fa76440f4c7222bd18a8fdc59216d17e89
1.6 用刚打的镜像启动容器 测试
root@z2:~# docker run -d -p 80:80 --name my-centos-nginx zt/centos-nginx:v1 /usr/sbin/nginx
1.7 访问测试
root@z2:~# curl 192.168.1.102
centos_yum_nginx
2. 手动制作编译版本 nginx 镜像
2.1 下载镜像并初始化系统
docker pull centos:7.8.2003
docker run -it docker.io/centos:7.8.2003 /bin/bash
root@z2:~# docker run -it docker.io/centos:7.8.2003 /bin/bash
[root@035d76841de4 /]# yum install wget -y
[root@035d76841de4 /]# cd /etc/yum.repos.d/
[root@035d76841de4 yum.repos.d]# rm -rf ./*
[root@035d76841de4 yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@035d76841de4 yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
2.2 编译安装 nginx
在容器内 安装基础命令, 然后下载源码包,解压编译,完成安装
yum install -y vim wget tree lrzsz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop
[root@035d76841de4 yum.repos.d]# cd /usr/local/src/
[root@035d76841de4 src]# wget http://nginx.org/download/nginx-1.10.3.tar.gz
[root@035d76841de4 src]# tar xvf nginx-1.10.3.tar.gz
[root@035d76841de4 src]# cd nginx-1.10.3
[root@035d76841de4 nginx-1.10.3]# ./configure --prefix=/usr/local/nginx --with-http_sub_module
[root@035d76841de4 nginx-1.10.3]# make && make install
2.3:关闭 nginx 后台运行,修改启动用户
[root@035d76841de4 nginx-1.10.3]# cd /usr/local/nginx/
[root@035d76841de4 nginx]# vim conf/nginx.conf
daemon off;
user nginx;
创建软连接
[root@035d76841de4 nginx]# ln -sv /usr/local/nginx/sbin/nginx /usr/sbin/nginx
'/usr/sbin/nginx' -> '/usr/local/nginx/sbin/nginx'
2.4 自定义 web 界面
[root@035d76841de4 nginx]# echo "My Nginx Test Page" > /usr/local/nginx/html/index.html
2.5 创建用户及授权
[root@035d76841de4 nginx]# useradd nginx -s /sbin/nologin
[root@035d76841de4 nginx]# chown nginx.nginx /usr/local/nginx/ -R
2.6:提交为镜像
root@z2:~# docker commit -m "test nginx" 035d76841de4 zt/nginx-test-image
sha256:04f1847c12cb0a71197aade63b93e53dd199d408b319340a4ab917b1ba963644
2.7 启动镜像并且测试
root@z2:~# docker run -d -p 81:80 zt/nginx-test-image /usr/sbin/nginx
ffaf6a53149602a3cf9ed1f1de8d2962310963d729c39a62746c5020b0bb93e9
root@z2:~# curl 192.168.1.102:81
My Nginx Test Page
更多推荐
已为社区贡献1条内容
所有评论(0)