Docker容器配置Nginx例項分享
這篇文章主要介紹了Docker容器配置Nginx例項分享的相關資料,需要的朋友可以參考下
作為目前最火的應用,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 “ 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;”]
文章來源:搜尋引擎大全
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69911024/viewspace-2642331/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- nginx docker容器配置https(ssl)NginxDockerHTTP
- Docker Compose例項之nginx反向代理GitLabDockerNginxGitlab
- Docker配置nginxDockerNginx
- nginx thinkphp rewrite配置項NginxPHP
- docker redis 多個例項DockerRedis
- docker-compose 使用例項Docker
- docker 容器安裝配置 headscaleDocker
- Docker配置PHP+Nginx+MySQLDockerPHPNginxMySql
- 【docker】docker 安裝配置 nginx+php+composerDockerNginxPHP
- Docker容器學習與分享12Docker
- Docker的通俗理解和透過宿主機埠訪問Redis容器的例項DockerRedis
- Linux下安裝 Docker例項LinuxDocker
- Docker容器化部署嘗試——多容器通訊(node + mongoDB + nginx)DockerMongoDBNginx
- Docker配置容器位置和小技巧Docker
- 詳解 Docker 容器網路配置Docker
- Docker Nginx 配置多個子域名DockerNginx
- Docker(十七)-修改Docker容器啟動配置引數Docker
- Docker 搭建多容器組合服務 (nginx + PHP)DockerNginxPHP
- 【Nginx】Nginx容器Nginx
- jQuery Validate全域性配置和例項配置jQuery
- Docker nginx安裝與配置掛載DockerNginx
- docker 安裝 nginx 並配置反向代理DockerNginx
- OpenHarmony雙網路卡配置例項
- 雲容器例項服務入門必讀
- docker 執行elasticsearch單例項(elasticsearch:7.12.0)DockerElasticsearch單例
- canal同步mysql,監聽單例項,多例項配置MySql單例
- 容器、Docker與Kubernetes——Kubernetes的配置入門Docker
- shell動態修改yml配置例項
- 分享10道Docker容器相關面試題!!!Docker面試題
- Nginx 配置 docker 映象代理服務,解決docker pull問題NginxDocker
- 需求過程化分析方法-例項分享
- 分享一個SQLite 效能優化例項SQLite優化
- Docker開發例項之應用場景Docker
- 如何配置極狐GitLab Docker 容器映象倉庫GitlabDocker
- Docker配置本地映象與容器的儲存位置Docker
- docker下nginx反向代理和負載均衡配置DockerNginx負載
- [非專業翻譯] Mapster - 配置例項
- 阿里雲ECI如何6秒擴容3000容器例項?阿里