设为首页 收藏本站
查看: 1149|回复: 0

[经验分享] (五)Docker镜像管理2之nginx镜像制作

[复制链接]

尚未签到

发表于 2018-5-28 08:32:28 | 显示全部楼层 |阅读模式
  下面我们来制作一个Nginx的镜像,通过编译安装方式来完成。
  

  重新制作一个基础镜像
   DSC0000.png

  文件内容
# Version: 0.0.1
# 指定使用哪个基础镜像
FROM centos:6.6
# 说明该镜像的制作者和联系方式
MAINTAINER Rex.chen rex.chen@aaa.com
#设置标签,不是必须的只是为了说明里面的版本查看起来方便
LABEL Discrition="更换了epel源,并安装了相应库和组件"
#备份系统默认的epel源,并设置新的EPEL源
RUN cd /etc/yum.repos.d/
RUN ["mv","/etc/yum.repos.d/CentOS-Base.repo","/etc/yum.repos.d/CentOS-Base.repo.bak"]
COPY ./Centos-6.repo /etc/yum.repos.d/CentOS-Base.repo
RUN yum makecache
# 安装必要库和组件
RUN yum update -y && yum groupinstall -y 'Development Tools' && yum -y install wget \
    libmcrypt-devel mhash-devel libxslt-devel \
    libjpeg libjpeg-devel libpng libpng-devel \
    freetype freetype-devel libxml2 libxml2-devel \
    zlib zlib-devel glibc glibc-devel glib2 glib2-devel \
    bzip2 bzip2-devel ncurses ncurses-devel \
    curl curl-devel e2fsprogs e2fsprogs-devel \
    krb5 krb5-devel libidn libidn-devel openssl \
    openssl-devel openldap-devel
#
RUN yum clean all  运行下面的命令制作镜像
  我这里使用了-f来指定dockerfile
docker image build -t mycentos6:1.0 -f ./buildProImange .  

  制作Nginx镜像
  基于上面的基础镜像来制作一个Nginx的基础镜像,我们通过编译安装的方式来完成。
DSC0001.png

  看一下制作Nginx镜像的Dockerfile怎么写的:
# Version: 0.0.1
# 指定使用哪个基础镜像
FROM mycentos6:1.0
# 说明该镜像的制作者和联系方式
MAINTAINER Rex.chen rex.chen@aaa.com
#设置标签,不是必须的只是为了说明里面的版本查看起来方便
LABEL Nginx="1.10.2"
# 建立用户和组
RUN ["groupadd","-r","nginx"]
RUN ["useradd","-r","-g","nginx","-s","/sbin/nologin","nginx"]
# 复制安装程序到指定目录,我这里使用COPY命令只是因为我要自行解压缩
ENV SOFT_DEST /usr/local/src
ADD nginx/nginx-1.10.2.tar.gz $SOFT_DEST
ADD nginx/openssl-1.1.0c.tar.gz $SOFT_DEST
ADD nginx/zlib-1.2.11.tar.gz $SOFT_DEST
ADD nginx/pcre-8.39.tar.gz $SOFT_DEST
# 设置工作目录,这步可以不要
WORKDIR $SOFT_DEST
# 创建必要目录
RUN ["mkdir","/var/tmp/nginx","-p"]
RUN ["mkdir","/var/run/nginx","-p"]
RUN ["mkdir","/var/log/nginx","-p"]
RUN ["mkdir","/var/lock/nginx","-p"]
# 执行编译安装,这里一定要把进入目录和./configure以及后面的make和make install写在
#一起,否则会提示找不到,因为每一个命令都是一层镜像
RUN cd ./nginx-1.10.2 && ./configure \
    --prefix=/usr/nginx/ \
    --sbin-path=/usr/sbin/nginx \
    --conf-path=/etc/nginx/nginx.conf \
    --error-log-path=/var/log/nginx/error.log \
    --http-log-path=/var/log/nginx/access.log \
    --pid-path=/var/run/nginx/nginx.pid \
    --lock-path=/var/lock/nginx/nginx.lock \
    --user=nginx --group=nginx \
    --with-file-aio --with-threads \
    --with-http_ssl_module \
    --with-http_flv_module \
    --with-http_stub_status_module \
    --with-http_gzip_static_module \
    --with-http_v2_module \
    --with-http_realip_module \
    --http-client-body-temp-path=/var/tmp/nginx/client/ \
    --http-proxy-temp-path=/var/tmp/nginx/proxy/ \
    --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
    --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi/ \
    --http-scgi-temp-path=/var/tmp/nginx/scgi/ \
    --with-openssl=/usr/local/src/openssl-1.1.0c \
    --with-zlib=/usr/local/src/zlib-1.2.11 \
    --with-pcre=/usr/local/src/pcre-8.39 && make && make install
EXPOSE 80  制作Nginx镜像
docker image build -t nginx:1.0 -f ./nginxDockerfile .  上面是制作Nginx的基础镜像,下面我们就基于这个镜像来制作服务容器,因为Nginx镜像是可以重复使用的,个性化的东西要单独来做,Nginx在容器中通常是作为WEB服务器来运行的而不是反向代理。

# Version: 0.0.1
# 指定使用哪个基础镜像
FROM nginx:1.0
# 说明该镜像的制作者和联系方式
MAINTAINER Rex.chen rex.chen@aaa.com
#设置标签,不是必须的只是为了说明里面的版本查看起来方便
LABEL Nginx="1.10.2"
# 在容器中建立挂载点,主要用于日志文件和网页文件
VOLUME ["/var/nginx"]
# 设置工作目录,不是必须的
WORKDIR /var/nginx
# 拷贝nginx配置文件到容器中
ADD nginx/nginx.conf /etc/nginx/nginx.conf
# 指定在容器启动时执行的命令
CMD ["/usr/sbin/nginx"]  然后你需要在宿主机上的/var/nginx中建立2个目录一个是log一个是www,www目录存放页面文件
DSC0002.png

  另外Nginx需要非守护进程方式启动,你只需在配置文件中加入daemon off;即可,如下图:
DSC0003.png

  下面是Nginx的日志和网页文件的配置
DSC0004.png

  制作镜像
docker image build -t webservices:1.0 -f ./nginxSrv .  运行容器
docker run --name webSrv01 -d -p 80 -v /var/nginx/:/var/nginx/ webservices:1.0
DSC0005.png

  测试连接
   DSC0006.png
  从本地看一下是否有日志文件呢:
   DSC0007.png
  我们这里用了一个新的参数就是-v,这个参数的作用就是把本地目录挂载到容器中,使用方法如下:
-v /PATH本地路径:/PATH容器路径:<ro|rw>
#后面的<ro|rw>是设置读写权限,默认是可读写  这个参数后面只能挂载一个目录到容器,通过docker inspect查看,默认是读写权限
   DSC0008.png
  如果以后要修改网页内容,那么你只需修改/var/nginx/www目录下修改就好。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-481978-1-1.html 上篇帖子: Docker数据安全隐患分析 下篇帖子: docker—适用于中小企业的生产、测试、开发环境
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表