首页服务器Web服务器 Docker容器的Tengine实践

Docker容器的Tengine实践

作为目前最火的应用,Docker 确实存在着其独到之处,无论是程序猿还是运维都应该听说过 Docker 的大名,Docker 已经走过了许多的坑,目前最新版本是 v1.11.0 版本,应该说是完全能承…

作为目前最火的应用,Docker 确实存在着其独到之处,无论是程序猿还是运维都应该听说过 Docker 的大名,Docker 已经走过了许多的坑,目前最新版本是 v1.11.0 版本,应该说是完全能承载开发使用和运维监控,这款工具能帮助我们高效的打包、发布和运行承载着应用程序的容器系统。而且收集日志、帮助 App 的快速开发都有很大作用。

容器和虚拟机,经常是被拿出来对比的两款产品,实际上两者有着根本的差别,虚拟机是完全模拟了一台真实计算机,在上面运行的系统可能或者不可能知道自己运行在虚拟化环境下,并且虚拟机承载了将用户指令转换为特权指令的功能,所以虚拟机非常复杂,但是很完备,而 Docker 则完全不同。Docker 使用主机自身的 Linux 内核,然后从镜像中产生磁盘目录和软件,所有的进程都运行在主机上,如果有兴趣的话完全可以 ps aux 查询一下,就能发现在 Docker 中运行的进程,只不过 Docker 对其做了如同 chroot 差不多概念的封装。

Docker 真正用法

在 Docker 发展的早期,由于 busybox 等轻量化镜像不完备,所以各大发行版的缩减瘦身镜像得到了更多的使用,特别是由于 Docker 本身是在 Ubuntu 环境下开发的,所以 Ubuntu 和 Debian 在很多镜像中作为基镜像,以此作为基础产生目标镜像。但是随着在实践中的使用,其弊端也暴露出来了,就是太过于重量化,比如 systemd 的日志功能和 Docker 本身的日志功能被重复使用,镜像很难缩小到 300M 以内。而且 Docker 的推荐使用方式就是单进程模型,而并非是多个进程如同一个完备的操作系统一般。所以就产生了 alpine 等轻量级基镜像,alpine 是什么则可以自行百度,这个镜像是 Docker 官方推荐的镜像,未来官方镜像将会迁移到 alpine 作为基础的镜像上,所以,我们应当早日熟悉此镜像。

构建 Dockerfile

本文讲述的是 Docker 容器的 Nginx 实践,不过官方实际上已经有了关于 Nginx 的 alpine 镜像。而在实际使用过程中,笔者更多的是使用 Tengine,所以根据官方 Dockerfile 的参考,笔者自行编写了 Tengine 镜像的 Dockerfile,希望能抛砖引玉,各位能够批评指正。

FROM alpine:3.3MAINTAINER ChasonTang ENV TENGINE_VERSION 2.1.2ENV CONFIG "/    --prefix=/etc/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.pid /    --lock-path=/var/run/nginx.lock /    --http-client-body-temp-path=/var/cache/nginx/client_temp /    --http-proxy-temp-path=/var/cache/nginx/proxy_temp /    --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp /    --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp /    --http-scgi-temp-path=/var/cache/nginx/scgi_temp /    --user=nginx /    --group=nginx /    --with-http_ssl_module /    --with-http_realip_module /    --with-http_addition_module /    --with-http_sub_module /    --with-http_dav_module /    --with-http_flv_module /    --with-http_mp4_module /    --with-http_gunzip_module /    --with-http_gzip_static_module /    --with-http_random_index_module /    --with-http_secure_link_module /    --with-http_auth_request_module /    --with-mail /    --with-mail_ssl_module /    --with-file-aio /    --with-http_spdy_module /    --with-ipv6 /    --with-jemalloc /    "ADD ngx_user.patch /ADD repositories /etc/apk/repositoriesRUN /  addgroup -S nginx /  && adduser -D -S -h /var/cache/nginx -s /sbin/nologin -G nginx nginx /  && apk add --no-cache --virtual .build-deps /    gcc /    libc-dev /    make /    openssl-dev /    pcre-dev /    zlib-dev /    linux-headers /    curl /    jemalloc-dev /  && curl "http://tengine.taobao.org/download/tengine-$TENGINE_VERSION.tar.gz" -o tengine.tar.gz /  && mkdir -p /usr/src /  && tar -zxC /usr/src -f tengine.tar.gz /  && rm tengine.tar.gz /  && cd /usr/src/tengine-$TENGINE_VERSION/src/os/unix/ /  && mv /ngx_user.patch ./ngx_user.patch /  && patch ngx_user.c ngx_user.patch /  && rm ngx_user.patch /  && cd ../../../ /#  && cd /usr/src/tengine-$TENGINE_VERSION /  && ./configure $CONFIG --with-debug /  && make /  && mv objs/nginx objs/nginx-debug /  && ./configure $CONFIG /  && make /  && make install /  && rm -rf /etc/nginx/html/ /  && mkdir /etc/nginx/conf.d/ /  && mkdir -p /usr/share/nginx/html/ /  && install -m644 html/index.html /usr/share/nginx/html/ /  && install -m644 html/50x.html /usr/share/nginx/html/ /  && install -m755 objs/nginx-debug /usr/sbin/nginx-debug /  && strip /usr/sbin/nginx* /  && runDeps="$( /    scanelf --needed --nobanner /usr/sbin/nginx /      | awk '{ gsub(/,/, "/nso:", $2); print "so:" $2 }' /      | sort -u /      | xargs -r apk info --installed /      | sort -u /  )" /  && apk add --virtual .nginx-rundeps $runDeps /  && apk del .build-deps /  && rm -rf /usr/src/nginx-$NGINX_VERSION /  && apk add --no-cache gettext /  /  # forward request and error logs to docker log collector  && ln -sf /dev/stdout /var/log/nginx/access.log /  && ln -sf /dev/stderr /var/log/nginx/error.logCOPY nginx.conf /etc/nginx/nginx.confCOPY nginx.vh.default.conf /etc/nginx/conf.d/default.confEXPOSE 80 443CMD ["nginx", "-g", "daemon off;"]
本文来自网络,不代表1号站长-站长学院|资讯交流平台立场。转载请注明出处: https://www.1cn.cc/fwq/web/5036.html
上一篇vim配置显示行号和语法高亮 即.vimrc文件的配置
下一篇 Win7系统下tomcat7.0配置教程
admin

作者: admin

这里可以再内容模板定义一些文字和说明,也可以调用对应作者的简介!或者做一些网站的描述之类的文字或者HTML!

为您推荐

评论列表()

    联系我们

    联系我们

    0898-88888888

    在线咨询: QQ交谈

    邮箱: email@wangzhan.com

    工作时间:周一至周五,9:00-17:30,节假日休息

    关注微信
    微信扫一扫关注我们

    微信扫一扫关注我们

    关注微博
    返回顶部