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è)簡單的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)文章
Centos7 安裝部署Kubernetes(k8s)集群實(shí)現(xiàn)過程
這篇文章主要為大家介紹了Centos7 安裝部署Kubernetes(k8s)集群實(shí)現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11docker部署數(shù)據(jù)可視化平臺(tái)Metabase
Metabase 把數(shù)據(jù)分析常用的查詢通過一個(gè)個(gè)易于操作的界面呈現(xiàn),本文主要介紹了docker部署數(shù)據(jù)可視化平臺(tái)Metabase,具有一定的參考價(jià)值,感興趣的可以了解一下2024-04-04Mac上使用Docker如何快速啟動(dòng)MySQL測(cè)試
本文主要討論如何使用Docker快速啟動(dòng) MySQL 測(cè)試,包括Mac環(huán)境。非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-10-10借助Docker搭建JMeter+Grafana+Influxdb監(jiān)控平臺(tái)的詳細(xì)教程
這篇文章主要介紹了借助Docker搭建JMeter+Grafana+Influxdb監(jiān)控平臺(tái),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01idea鏈接不上虛擬機(jī)的docker里的mongodb問題及解決
這篇文章主要介紹了idea鏈接不上虛擬機(jī)的docker里的mongodb問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06Docker部署Java應(yīng)用程序的實(shí)現(xiàn)步驟
本文主要介紹了Docker部署Java應(yīng)用程序的實(shí)現(xiàn)步驟,通過將Java應(yīng)用程序打包成一個(gè)Docker鏡像,可以實(shí)現(xiàn)快速部署、資源隔離和靈活擴(kuò)展,感興趣的可以了解一下2024-03-03