Docker掛載資料卷部署Nginx
簡(jiǎn)介
上一篇總結(jié)了下docker內(nèi)mysql的資料卷設(shè)置方式,走b/s方向怎么能忘記nginx呢?今天來(lái)補(bǔ)上這一篇。
Nginx資料卷
nginx的作用有很多,比如正向代理、反向代理、負(fù)載均衡、透明代理等,一般情況下使用較多的是反向代理和負(fù)載均衡。這些操作只需要修改配置文件就可以完成,所以我們只需要將配置文件同步在本地即可。nginx配置文件的路徑是 etc/nginx/nginx.conf ,首先創(chuàng)建對(duì)應(yīng)目錄和文件:
nginx1目錄下的nginx.conf也要?jiǎng)?chuàng)建,內(nèi)容空著就行。接下來(lái)查看鏡像是否正常:
如果還沒(méi)有下載鏡像,使用以下命令拉取鏡像(默認(rèn)最新版):
docker pull nginx
接下來(lái)運(yùn)行容器:
docker run -itd -p 80:80 --name nginx001 -v /docker/nginx1/nginx.conf:/etc/nginx/nginx.conf nginx
解釋一下:
- -itd:開(kāi)啟交互模式,模擬終端,后臺(tái)運(yùn)行
- -p 80:80:對(duì)應(yīng)端口映射到宿主機(jī)
- --name nginx001:自定義容器名稱
- -v /docker/nginx1/nginx.conf:/etc/nginx/nginx.conf:將宿主機(jī)的對(duì)應(yīng)文件映射到nginx的配置文件
nginx:運(yùn)行的鏡像名稱
運(yùn)行以上命令以后,會(huì)返回隨機(jī)字符串代表容器創(chuàng)建成功:
查看運(yùn)行中的容器:
沒(méi)有看到nginx001,肯定是運(yùn)行的時(shí)候出錯(cuò)了,我們來(lái)看一下錯(cuò)誤信息:
大概意思是配置文件中沒(méi)有找到events節(jié)點(diǎn)。因?yàn)槲覀儎?chuàng)建的文件內(nèi)容是空的,所以啟動(dòng)容器的時(shí)候直接把對(duì)應(yīng)目錄下的nginx.conf給映射到nginx001里面的nginx.conf了,空配置的nginx當(dāng)然無(wú)法運(yùn)行。
現(xiàn)在vi剛才本地創(chuàng)建好的nginx.conf,開(kāi)始配置:
之前我在docker上部署了一個(gè)簡(jiǎn)易的 .net core 程序,占用本地端口 1500 ,現(xiàn)在我把程序通過(guò)nginx反向代理到一個(gè)指定域名,并通過(guò)80端口訪問(wèn)。配置文件寫好以后,重啟容器nginx001:
現(xiàn)在nginx001就成功啟動(dòng)了,我們?cè)L問(wèn)一下剛才指定的域名:
nginx的配置已經(jīng)生效。
最后我們來(lái)嘗試一下docker重啟會(huì)不會(huì)導(dǎo)致配置初始化,重啟docker:
啟動(dòng)兩個(gè)容器:
訪問(wèn)頁(yè)面:
數(shù)據(jù)庫(kù)并沒(méi)有因?yàn)閐ocker重啟而被初始化,證明資料卷已經(jīng)生效。以后再也不怕docker宕機(jī)而數(shù)據(jù)丟失了。
補(bǔ)充
nginx配置文件中的 proxy_pass 屬性,非docker環(huán)境配置的時(shí)候,localhost或127.0.0.1是可以正常生效的,但是在docker下nginx容器配置localhost或127.0.0.1時(shí),有一個(gè)小坑導(dǎo)致無(wú)法完成實(shí)際的反向代理。因?yàn)槿萜鬟\(yùn)行時(shí),docker會(huì)給它分配單獨(dú)的ip和端口,然后把docker占用的ip映射到容器ip(比如docker下mysql啟動(dòng)后,使用localhost可以登陸客戶端)。但nginx啟動(dòng)時(shí),會(huì)先讀取配置文件,配置正確的話才會(huì)運(yùn)行,所以容器運(yùn)行成功后,docker才把本地ip映射進(jìn)去。如果配置文件寫的是localhost或127.0.0.1,那么只有直接訪問(wèn)容器的ip才會(huì)觸發(fā)反向代理。所以如果在服務(wù)器使用docker配置nginx,直接輸入服務(wù)器ip即可完成配置。
到此這篇關(guān)于Docker掛載資料卷部署Nginx的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Docker容器沒(méi)有權(quán)限寫入宿主機(jī)目錄的解決方案
這篇文章主要介紹了Docker容器沒(méi)有權(quán)限寫入宿主機(jī)目錄的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03docker容器與centos宿主機(jī)時(shí)間一致設(shè)置方法
這篇文章主要介紹了docker容器與centos宿主機(jī)時(shí)間一致設(shè)置方法,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-05-05詳解Docker Swarm服務(wù)發(fā)現(xiàn)和負(fù)載均衡原理
這篇文章主要介紹了詳解Docker Swarm服務(wù)發(fā)現(xiàn)和負(fù)載均衡原理,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05Docker Desktop更改鏡像存儲(chǔ)位置的實(shí)現(xiàn)
本文主要主要介紹了Docker Desktop更改鏡像存儲(chǔ)位置的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06Docker中namespace隔離的實(shí)戰(zhàn)
Namespace是Linux內(nèi)核的一個(gè)功能,用于隔離和管理系統(tǒng)資源,如進(jìn)程、網(wǎng)絡(luò)和文件系統(tǒng)等,通過(guò)創(chuàng)建隔離的命名空間,系統(tǒng)可以實(shí)現(xiàn)容器化和資源隔離,提高系統(tǒng)的安全性和穩(wěn)定性,這種技術(shù)廣泛應(yīng)用于Docker等容器技術(shù)中,本文就來(lái)介紹一下Docker中namespace隔離的實(shí)戰(zhàn)2024-11-11docker 創(chuàng)建RedHat8.5鏡像的命令
這篇文章主要介紹了docker 創(chuàng)建RedHat8.5鏡像的命令,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-03-03