docker運(yùn)行nginx容器并掛載數(shù)據(jù)卷
容器數(shù)據(jù)卷(docker持久化):
類似掛載或共享存儲(chǔ)的功能,將容器的目錄映射到宿主機(jī)目錄上,使之?dāng)?shù)據(jù)共享并實(shí)現(xiàn)統(tǒng)一管理。防止容器被刪除數(shù)據(jù)丟失。
掛載目錄注意事項(xiàng):
如果直接啟動(dòng)nginx容器并指定掛在目錄,會(huì)出現(xiàn)將容器中的目錄清空的現(xiàn)象,所以需要先確認(rèn)容器中nginx的目錄結(jié)構(gòu),然后將容器中nginx的相關(guān)目錄或文件拷貝下來(lái)再啟動(dòng)容器。
通過(guò)-v指定掛載目錄時(shí)會(huì)以宿主機(jī)的目錄為標(biāo)準(zhǔn),如果宿主機(jī)的目錄為空那么啟動(dòng)容器后容器的目錄也是空的。
1、先啟動(dòng)一個(gè)nginx容器并查看nginx的相關(guān)目錄和文件
(1) 啟動(dòng)nginx容器
# docker container run -d --name="testnginx" nginx:latest
(2) 查看nginx相關(guān)目錄和文件
# docker container exec testnginx ls /etc/nginx/nginx.conf # 主配置文件路徑 /etc/nginx/nginx.conf # docker container exec testnginx ls /etc/nginx/conf.d # 默認(rèn)配置文件路徑 default.conf # docker container exec testnginx ls /usr/share/nginx/html # 站點(diǎn)目錄文件路徑 50x.html index.html # docker container exec testnginx ls /var/log/nginx # 日志文件路徑 access.log error.log
2、宿主機(jī)創(chuàng)建數(shù)據(jù)卷,并將容器中的文件或目錄拷貝到數(shù)據(jù)卷
(1) 創(chuàng)建主配置文件路徑并拷貝配置文件到宿主機(jī)
# mkdir /data/nginx/conf -p # 主配置文件路徑 # docker container cp testnginx:/etc/nginx/nginx.conf /data/nginx/conf/
(2) 將容器中的conf.d目錄拷貝到宿主機(jī)中
# docker container cp testnginx:/etc/nginx/conf.d /data/nginx/
(3) 將容器中站點(diǎn)目錄拷貝到宿主機(jī)
# docker container cp testnginx:/usr/share/nginx/html /data/nginx/
(4) 創(chuàng)建日志路徑(日志文件就不需要拷貝了)
# mkdir /data/nginx/logs
3、運(yùn)行nginx容器
掛載文件時(shí),必須是一個(gè)存在的文件或目錄,比如nginx.conf,如果修改宿主機(jī)的nginx.conf,需要重啟容器才生效 # docker container run -d --restart=always -p 8000:80 -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/conf.d:/etc/nginx/conf.d -v /data/nginx/html:/usr/share/nginx/html -v /data/nginx/logs:/var/log/nginx --name="nginx01" nginx:latest -------------------------------- docker container run -d # 后臺(tái)運(yùn)行nginx -p 8000:80 # 端口映射 -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf # 映射nginx.conf配置文件,如果不指定宿主機(jī)掛載目錄docker會(huì)自動(dòng)創(chuàng)建一個(gè)通過(guò)docker inspect查看 -v /data/nginx/conf.d:/etc/nginx/conf.d # 映射conf.d目錄 -v /data/nginx/html:/usr/share/nginx/html # 映射html目錄 -v /data/nginx/logs:/var/log/nginx # 映射日志目錄
4、修改數(shù)據(jù)卷中的內(nèi)容
# cd /data/nginx/html/ # echo "hello nginx" > index.html [root@docker-106 nginx]# cat /data/nginx/conf.d/test.conf server { listen 80; server_name www.test.com; access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; }
5、重啟容器并訪問(wèn)nginx服務(wù)
# docker container restart nginx01 # docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES acf1b99cdabc nginx:latest "/docker-entrypoin..." 16 minutes ago Up 4 seconds 0.0.0.0:8000->80/tcp nginx01 # curl 192.168.1.106:8000 hello nginx
到此這篇關(guān)于docker運(yùn)行nginx容器并掛載數(shù)據(jù)卷的文章就介紹到這了,更多相關(guān)docker運(yùn)行nginx掛載數(shù)據(jù)卷內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker中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 容器指定自定義網(wǎng)段的固定IP/靜態(tài)IP地址
這篇文章主要介紹了Docker 容器指定自定義網(wǎng)段的固定IP/靜態(tài)IP地址的相關(guān)資料,需要的朋友可以參考下2016-12-12Docker不同網(wǎng)段下的容器互聯(lián)的實(shí)現(xiàn)
本文主要介紹了Docker不同網(wǎng)段下的容器互聯(lián)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01Docker添加tomcat容器無(wú)法訪問(wèn)首頁(yè)解決方案
這篇文章主要介紹了Docker添加tomcat容器無(wú)法訪問(wèn)首頁(yè)解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07