docker部署nginx服務(wù)的實(shí)現(xiàn)步驟
我的一點(diǎn)點(diǎn)docker部署服務(wù)習(xí)慣,就是喜歡使用官方的鏡像,如果沒有官方的鏡像或者官方的鏡像不好用,我會(huì)找第三方使用量比較多的鏡像。這個(gè)習(xí)慣是基于安全的考慮,畢竟官方做得稍微安全點(diǎn),有漏洞也更新最快。
一、nginx的image準(zhǔn)備
1、docker search 搜索nginx

如如圖所示,STARS 第一為17705是官方的mysql鏡像。第三方bitnami/mysql的STARS為79。
2、https://hub.docker.com鏡像站搜索nginx

如圖所示,第一個(gè)是nginx的官方鏡像。
二、nginx官方部署nginx方法
1、docker 啟動(dòng)一個(gè)簡(jiǎn)單的nginx 實(shí)例
docker run \ --name some-nginx \ -v /data/nginx/html:/usr/share/nginx/html:ro \ -d \ nginx
- docker run:是啟動(dòng)一個(gè)docker 容器的命令。完整書寫方法應(yīng)該是docker container run。
- --name some-nginx: 給nginx容器起個(gè)名字,為some-nginx。
- -v /data/nginx/html:/usr/share/nginx/html:ro:v是volume的首字母,是卷的意思。就是把容器的目錄綁到宿主機(jī)上的目錄,好方便我們查看文件,修改文件?,F(xiàn)在這個(gè)/data/nginx/html是宿主機(jī)上存放web文件的目錄,/usr/share/nginx/html是nginx容器里的目錄,ro是容器內(nèi)不能修改,會(huì)提示read-only。
- -d: d是detach的首字母,可以理解為后臺(tái)運(yùn)行這個(gè)nginx容器。
- nginx:指的nginx的鏡像名。tag是給一個(gè)版本nginx打個(gè)標(biāo)簽,如果不加:tag默認(rèn)為nginx:latest。nginx最新鏡像。
官方還有一個(gè)加載靜態(tài)文件的方法,就是以nginx官方鏡像為基礎(chǔ)鏡像,把靜態(tài)文件目錄復(fù)制 到新的鏡像里,這樣就不用綁定nginx需要內(nèi)容目錄。這個(gè)方法應(yīng)該不常用。除了你特別需求,不建議使用。

官方用生成一個(gè)加載靜態(tài)文件的鏡像啟動(dòng)nginx服務(wù)的方法
2、docker 啟動(dòng)一個(gè)暴露外網(wǎng)端口nginx 實(shí)例
#官方nginx鏡像暴露端口是80

dockerfile暴露的端口是80
#啟動(dòng)一個(gè)綁定外網(wǎng)端口是8080的nginx容器
docker run \ --name some-nginx \ -v /data/nginx/html:/usr/share/nginx/html:ro \ -p 8080:80 \ -d \ nginx
如果宿主機(jī)的ip是192.168.1.10,向nginx發(fā)起請(qǐng)求地址是http://192.168.1.10:8080
3.docker 啟動(dòng)一個(gè)暴露外網(wǎng)端口和nginx配置文件路徑的nginx 實(shí)例
假設(shè)宿主機(jī)的nginx配置文件存放目錄/data/nginx/nginxconf,如果手頭沒有nginx配置文件,可以把容器的nginx配置文件復(fù)制到/data/nginx/nginxconf,不過先要啟動(dòng)一下沒有綁配置的nginx容器,復(fù)制配置文件,刪除這個(gè)nginx容器,最后就可以啟動(dòng)綁定nginx配置文件路徑的nginx 實(shí)例。整個(gè)操作步驟如下:
第一步啟動(dòng)一個(gè)不綁定nginx配置文件的容器
docker run \ --name some-nginx \ -v /data/nginx/html:/usr/share/nginx/html:ro \ -p 8080:80 \ -d \ nginx
第二步復(fù)制some-nginx里nginx配置文件到宿主機(jī)的/data/nginxconf下
docker cp nginx:/etc/nginx /data/nginx/nginxconf mv /data/nginx/nginxconf/nginx/* /data/nginx/nginxconf/ rm -rf /data/nginx/nginxconf/nginx
第三步刪除nginx容器
docker rm -f some-nginx
第四步啟動(dòng)綁定nginx配置文件的nginx容器
docker run \ --name some-nginx \ -v /data/nginx/html:/usr/share/nginx/html:ro \ -v /data/nginx/nginxconf:/etc/nginx:ro \ -p 8080:80 \ -d \ nginx
-v /data/nginx/nginxconf:/etc/nginx:ro:/data/nginxconf宿主機(jī)上存儲(chǔ)nginx的配置文件路徑。/etc/nginx是容器里nginx配置文件路徑。
三、nginx容器里運(yùn)行nginx用戶

上圖是截至nginx官方說明,意思如下:
從1.17.0開始,基于alpine和debian的鏡像變體都使用相同的用戶和組id來刪除工作進(jìn)程的特權(quán)(容器nginx運(yùn)行用戶是nginx ,uid和gid都是101)
id nginx uid=101(nginx) gid=101(nginx) groups=101(nginx)
可以將映像作為特權(quán)較低的任意UID/GID運(yùn)行。然而,這需要修改nginx配置,以使用特定UID/GID對(duì)可寫的目錄??梢圆挥胣ginx用戶運(yùn)行nginx,我覺得沒有必要修改運(yùn)行用戶。
四、docker-compose啟動(dòng)nginx服務(wù)
#nginx的docker-compose.yml文件,存放在/data/nginx/下
version: '3.7'
services:
nginx:
image: nginx
restart: always
hostname: nginx
container_name: nginx
privileged: true
ports:
- 8080:80
volumes:
- /data/nginx/nginxconf:/etc/nginx
- /data/nginx/html:/usr/share/nginx/html
- /data/nginx/logs/:/var/log/nginx//data/nginx/logs/:/var/log/nginx/ 加了一個(gè)日志映射到宿主機(jī)目錄。好查看日志文件。
#docker-compose啟動(dòng)nginx
docker-compose -f /data/nginx/docker-compose.yml up -d
到此這篇關(guān)于docker部署nginx服務(wù)的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)docker部署nginx服務(wù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Docker中安裝配置Oracle數(shù)據(jù)庫
本篇文章主要介紹了詳解Docker中安裝配置Oracle數(shù)據(jù)庫,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-04-04
Windows?Server?2012?R2?安裝?Docker的詳細(xì)步驟
這篇文章主要介紹了Windows?Server?2012?R2?安裝?Docker,在這個(gè)給大家說明下使用windows10、Windows?Server?2016以上系統(tǒng)可直接使用安裝包,低版本系統(tǒng)需要使用?Docker?Toolbox?來進(jìn)行安裝使用?Docker,需要的朋友可以參考下2022-04-04
docker容器運(yùn)行成功但無法訪問的原因分析及解決方案(以Tomcat為例親測(cè)有效)
這篇文章主要介紹了docker容器運(yùn)行成功但無法訪問的原因分析及對(duì)應(yīng)解決方案(以Tomcat為例親測(cè)有效),文中通過圖文結(jié)合的方式介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2024-03-03
Docker容器使用Arthas監(jiān)控Java應(yīng)用的完整指南
這篇文章主要為大家詳細(xì)介紹了如何在運(yùn)行中的 Docker 容器里,為目標(biāo) Java 進(jìn)程快速注入 Arthas 并進(jìn)行線上診斷,感興趣的小伙伴可以了解一下2025-08-08
局域網(wǎng)內(nèi)部署 Docker Registry(推薦)
本文將從創(chuàng)建單機(jī)的 Docker Registry 開始,逐步完成局域網(wǎng)內(nèi)可用的 Docker Registry 的創(chuàng)建,并重點(diǎn)解釋如何使用 IP 地址訪問 Registry 的方法2017-05-05

