這篇文章主要介紹了Docker容器配置Nginx實例分享的相關資料,須要的朋友能夠參考下
做爲目前最火的應用,Docker 確實存在着其獨到之處,不管是程序猿仍是運維都應該據說過 Docker 的大名,Docker 已經走過了許多的坑,目前最新版本是 v1.11.0 版本,應該說是徹底能承載開發使用和運維監控,這款工具能幫助咱們高效的打包、發佈和運行承載着應用程序的容器系統。並且收集日誌、幫助 App 的快速開發都有很大做用。linux
容器和虛擬機,常常是被拿出來對比的兩款產品,實際上二者有着根本的差異,虛擬機是徹底模擬了一臺真實計算機,在上面運行的系統可能或者不可能知道本身運行在虛擬化環境下,而且虛擬機承載了將用戶指令轉換爲特權指令的功能,因此虛擬機很是複雜,可是很完備,而 Docker 則徹底不一樣。Docker 使用主機自身的 Linux 內核,而後從鏡像中產生磁盤目錄和軟件,全部的進程都運行在主機上,若是有興趣的話徹底能夠 ps aux 查詢一下,就能發如今 Docker 中運行的進程,只不過 Docker 對其作了如同 chroot 差很少概念的封裝。nginx
Docker 真正用法docker
在 Docker 發展的早期,因爲 busybox 等輕量化鏡像不完備,因此各大發行版的縮減瘦身鏡像獲得了更多的使用,特別是因爲 Docker 自己是在 Ubuntu 環境下開發的,因此 Ubuntu 和 Debian 在不少鏡像中做爲基鏡像,以此做爲基礎產生目標鏡像。可是隨着在實踐中的使用,其弊端也暴露出來了,就是太過於重量化,好比 systemd 的日誌功能和 Docker 自己的日誌功能被重複使用,鏡像很難縮小到 300M 之內。並且 Docker 的推薦使用方式就是單進程模型,而並不是是多個進程如同一個完備的操做系統通常。因此就產生了 alpine 等輕量級基鏡像,alpine 是什麼則能夠自行百度,這個鏡像是 Docker 官方推薦的鏡像,將來官方鏡像將會遷移到 alpine 做爲基礎的鏡像上,因此,咱們應當早日熟悉此鏡像。運維
構建 Dockerfiledom
本文講述的是 Docker 容器的 Nginx 實踐,不過官方實際上已經有了關於 Nginx 的 alpine 鏡像。而在實際使用過程當中,筆者更多的是使用 Tengine,因此根據官方 Dockerfile 的參考,筆者自行編寫了 Tengine 鏡像的 Dockerfile,但願能拋磚引玉,各位可以批評指正。curl
FROM alpine:3.3MAINTAINER ChasonTang chasontang@gmail.comENV 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-KaTeX parse error: Expected 'EOF', got '&' at position 45: …ngine.tar.gz \ &̲& mkdir -p /usr…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 KaTeX parse error: Expected 'EOF', got '&' at position 10: CONFIG \ &̲& make \ && mak…( \ 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 KaTeX parse error: Expected 'EOF', got '&' at position 11: runDeps \ &̲& apk del .buil…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;」]工具
文章來源:搜索引擎大全http://www.iis7.com/b/ssyqdq/ui