十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
這篇文章主要介紹了Docker容器配置Nginx實(shí)例分享的相關(guān)資料,需要的朋友可以參考下
作為目前最火的應(yīng)用,Docker 確實(shí)存在著其獨(dú)到之處,無(wú)論是程序猿還是運(yùn)維都應(yīng)該聽(tīng)說(shuō)過(guò) Docker 的大名,Docker 已經(jīng)走過(guò)了許多的坑,目前最新版本是 v1.11.0 版本,應(yīng)該說(shuō)是完全能承載開(kāi)發(fā)使用和運(yùn)維監(jiān)控,這款工具能幫助我們高效的打包、發(fā)布和運(yùn)行承載著應(yīng)用程序的容器系統(tǒng)。而且收集日志、幫助 App 的快速開(kāi)發(fā)都有很大作用。
容器和虛擬機(jī),經(jīng)常是被拿出來(lái)對(duì)比的兩款產(chǎn)品,實(shí)際上兩者有著根本的差別,虛擬機(jī)是完全模擬了一臺(tái)真實(shí)計(jì)算機(jī),在上面運(yùn)行的系統(tǒng)可能或者不可能知道自己運(yùn)行在虛擬化環(huán)境下,并且虛擬機(jī)承載了將用戶指令轉(zhuǎn)換為特權(quán)指令的功能,所以虛擬機(jī)非常復(fù)雜,但是很完備,而 Docker 則完全不同。Docker 使用主機(jī)自身的 Linux 內(nèi)核,然后從鏡像中產(chǎn)生磁盤(pán)目錄和軟件,所有的進(jìn)程都運(yùn)行在主機(jī)上,如果有興趣的話完全可以 ps aux 查詢一下,就能發(fā)現(xiàn)在 Docker 中運(yùn)行的進(jìn)程,只不過(guò) Docker 對(duì)其做了如同 chroot 差不多概念的封裝。
Docker 真正用法
在 Docker 發(fā)展的早期,由于 busybox 等輕量化鏡像不完備,所以各大發(fā)行版的縮減瘦身鏡像得到了更多的使用,特別是由于 Docker 本身是在 Ubuntu 環(huán)境下開(kāi)發(fā)的,所以 Ubuntu 和 Debian 在很多鏡像中作為基鏡像,以此作為基礎(chǔ)產(chǎn)生目標(biāo)鏡像。但是隨著在實(shí)踐中的使用,其弊端也暴露出來(lái)了,就是太過(guò)于重量化,比如 systemd 的日志功能和 Docker 本身的日志功能被重復(fù)使用,鏡像很難縮小到 300M 以內(nèi)。而且 Docker 的推薦使用方式就是單進(jìn)程模型,而并非是多個(gè)進(jìn)程如同一個(gè)完備的操作系統(tǒng)一般。所以就產(chǎn)生了 alpine 等輕量級(jí)基鏡像,alpine 是什么則可以自行百度,這個(gè)鏡像是 Docker 官方推薦的鏡像,未來(lái)官方鏡像將會(huì)遷移到 alpine 作為基礎(chǔ)的鏡像上,所以,我們應(yīng)當(dāng)早日熟悉此鏡像。
構(gòu)建 Dockerfile
本文講述的是 Docker 容器的 Nginx 實(shí)踐,不過(guò)官方實(shí)際上已經(jīng)有了關(guān)于 Nginx 的 alpine 鏡像。而在實(shí)際使用過(guò)程中,筆者更多的是使用 Tengine,所以根據(jù)官方 Dockerfile 的參考,筆者自行編寫(xiě)了 Tengine 鏡像的 Dockerfile,希望能拋磚引玉,各位能夠批評(píng)指正。
FROM alpine:3.3MAINTAINER ChasonTang chasontang@gmail.com 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 “ /tupian/20230522/error.html 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;”]
文章來(lái)源:搜索引擎大全/tupian/20230522/