亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

Docker容器的Tengine實踐

2024-09-01 13:47:58
字體:
來源:轉載
供稿:網友

作為目前最火的應用,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 <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 "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;"]

我們知道,Docker 可以根據 Dockerfile 構建鏡像,上面就是筆者寫的 Dockerfile。首先,使用 FROM 指令指定此鏡像的基鏡像為 alpine:3.3,第二行為 Dockerfile 維護者聲明,然后使用兩個 ENV 指令聲明兩個環境變量,一個指定 Tengine 需要獲取的版本號,一個則是編譯安裝選項。這里暫時不講解,然后將一個補丁文件和 alpine 鏡像源配置文件復制到容器內,實際上是因為 tengine v2.1.2 存在著一個遺留的 glibc bug,會導致編譯時出錯,上游 Nginx 的最新代碼已經修復,而 tengine 的開發分支上面也已經修復了這個問題,筆者前不久提 issue 將此補丁修正了 tengine v2.1.3 分支的代碼,但是很可惜,v2.1.3 版本尚未有正式發布,所以只能先使用補丁手動修復此問題。至于鏡像源,則是因為國內存在著網絡問題,導致 apk 包管理命令無法成功下載各個依賴項,所以將其指定為了國內源,如果正式使用則可以移除這兩個文件。

然后就是使用 RUN 命令執行代碼,這里大家可以看到筆者使用 && 和 / 將所有的指令都壓縮為了一行,這里是有兩個原因:

RUN 指令不會保存上一條指令的工作路徑,每條 RUN 指令都只會將工作目錄指定為 / 目錄
一條 Dockerfile 中的指令就會產生一次鏡像的提交,換言之,減少 Dockerfile 中的指令就可以提高鏡像的復用水平
然后就是使用 apk 包管理命令下載安裝包括編譯器等依賴項,并且將這些依賴項標記為 .build-deps 組,便于后面將其卸載清理。然后就是非常常規的思路,./configure && make && make install,編譯選項都是非常中規中矩的,基本熟悉 Nginx 編譯的朋友都能看懂。但是上面可以注意到,Nginx 被編譯了兩次,一次開啟了 --with-debug 參數,一次沒有,這是因為在很多情況下,我們需要 Nginx 提供 debug 級別的監控日志,特別是在開發環境下,所以就編譯了兩次,便于使用。然后后面使用字符串分析處理將 Tengine 的運行時依賴項提取出來,標記為 .nginx-rundeps 然后卸載 .build-deps,最后則是兩個符號鏈接將 accessLog 和 errorLog 鏈接到標準輸入輸出,這樣我們就能使用 docker logs 命令方便的查看日志了。最后則是復制自定義的 Nginx 配置文件,然后使用 nginx -g daemon off; 讓 Nginx 以前臺進程方式運行。

總結

到這里已經講完了 Docker 在生產開發中的正確使用方法,Docker 也確實是一樣不可多得的好工具,祝愿大家早日使用 Docker 提升自己的生產力。

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97在线看福利| 欧美一区亚洲一区| 欧美性猛交xxxx乱大交极品| 国产成人精品久久亚洲高清不卡| 国产成人一区二区三区电影| 国产精品视频yy9099| 懂色aⅴ精品一区二区三区蜜月| 国产区精品视频| 国产一区二区日韩| 欧美激情视频网| 国自产精品手机在线观看视频| 日韩激情第一页| 亚洲娇小xxxx欧美娇小| 中文字幕亚洲情99在线| 岛国av一区二区三区| 亚洲午夜国产成人av电影男同| 成人字幕网zmw| 欧美中文字幕在线视频| 91久久久精品| 国产成人综合精品| 国产精品久久久久久久久久新婚| 亚洲一区av在线播放| 欧美精品少妇videofree| 美女久久久久久久久久久| 成人性生交大片免费看视频直播| 91天堂在线观看| 一本色道久久综合狠狠躁篇的优点| www.日韩av.com| 欧美日韩中文字幕日韩欧美| 国产91精品久| 78m国产成人精品视频| 性欧美办公室18xxxxhd| 欧美成年人视频网站欧美| 午夜精品一区二区三区在线视| 久久久噜久噜久久综合| 久久成人综合视频| 成人久久18免费网站图片| 国产精品永久在线| 国产最新精品视频| 欧美日韩国产限制| 欧美黑人一级爽快片淫片高清| 欧美电影在线免费观看网站| 国产大片精品免费永久看nba| 亚洲伊人久久大香线蕉av| 在线观看日韩视频| 欧美巨大黑人极品精男| 久久久欧美精品| 亚洲国产97在线精品一区| 亚洲最大福利网| 日韩精品福利在线| 日韩高清电影好看的电视剧电影| 亚洲色图激情小说| 成人网在线观看| 亚洲free性xxxx护士hd| 日韩精品免费在线视频观看| 最近日韩中文字幕中文| 91免费在线视频| 亚洲一区亚洲二区亚洲三区| 日韩电影中文字幕av| 亚洲精品视频在线播放| 亚洲成人a**站| 精品亚洲一区二区三区在线播放| 亚洲free性xxxx护士白浆| 国产91精品久久久| 欧美日韩一区二区免费在线观看| 欧美精品日韩www.p站| 国产视频999| 久久九九热免费视频| 精品国内自产拍在线观看| 国产精品夜间视频香蕉| 91精品中国老女人| 久久久久久久久91| 5566成人精品视频免费| 亚洲成av人影院在线观看| 欧美人在线视频| 日韩精品免费综合视频在线播放| 国产一区香蕉久久| 久久久久久久久中文字幕| 97国产成人精品视频| 国产男女猛烈无遮挡91| 亚洲最大中文字幕| 精品偷拍各种wc美女嘘嘘| 国产精品视频一区二区三区四| 国产婷婷97碰碰久久人人蜜臀| 亚洲午夜久久久影院| 国产精品香蕉在线观看| 青青草原成人在线视频| 疯狂做受xxxx高潮欧美日本| 91探花福利精品国产自产在线| 亚洲成人精品视频在线观看| 亚洲a在线播放| 色综合久久精品亚洲国产| 日韩欧亚中文在线| 亚洲理论片在线观看| 国产精品99免视看9| 亚洲最大激情中文字幕| 国产日韩在线一区| www日韩中文字幕在线看| 庆余年2免费日韩剧观看大牛| 成人免费视频在线观看超级碰| 久久国产加勒比精品无码| 成人免费视频97| 国产精品极品尤物在线观看| 91亚洲午夜在线| 亚洲人线精品午夜| 国产在线不卡精品| 中文字幕亚洲欧美| 国产剧情久久久久久| 亚洲国产美女久久久久| 国产精品www色诱视频| 日韩欧美中文在线| 久久久久99精品久久久久| 97在线免费观看| 国产日韩欧美日韩大片| 91精品啪在线观看麻豆免费| 日韩av电影手机在线| 26uuu日韩精品一区二区| 欧美专区在线播放| 日韩亚洲在线观看| 97视频在线观看播放| 亚洲va欧美va国产综合剧情| 国产精品亚发布| 亚洲第一精品夜夜躁人人躁| 久久久久北条麻妃免费看| 91地址最新发布| 狠狠综合久久av一区二区小说| 久久成人18免费网站| 国产亚洲日本欧美韩国| 国产伦精品一区二区三区精品视频| 亚洲一区二区三区香蕉| 国产精品999999| 欧美理论在线观看| 成人欧美一区二区三区在线| 日韩视频精品在线| 亚洲国产精品视频在线观看| 欧美俄罗斯乱妇| 青青青国产精品一区二区| 国产精品久久久久久久久影视| 91精品国产综合久久久久久蜜臀| 欧美性色xo影院| 亚洲精品一区av在线播放| 久久久久久久久爱| 欧美精品久久久久久久久| 性色av香蕉一区二区| 日韩视频免费中文字幕| 992tv成人免费视频| 精品久久久久久国产| 欧美性视频在线| 欧美日本精品在线| 91在线看www| 中文字幕成人精品久久不卡| 青青草原成人在线视频| 欧美日韩国产精品专区| 国产精品欧美日韩久久| 都市激情亚洲色图| 91色在线视频| 国产脚交av在线一区二区| 久久69精品久久久久久久电影好| 亚洲肉体裸体xxxx137| 国产精品视频免费观看www| 一区二区三区视频免费| 国产精品永久免费在线| 欧美成人免费全部| 久久精品精品电影网|