Docker部署Nginx服務(wù)的兩種實(shí)現(xiàn)方法
引言
在現(xiàn)代應(yīng)用部署中,Docker 憑借其輕量、隔離、可移植的特性成為主流選擇。Nginx 作為高性能的 Web 服務(wù)器和反向代理,結(jié)合 Docker 可以快速實(shí)現(xiàn)環(huán)境一致性和部署自動(dòng)化。本文將詳細(xì)介紹如何通過 Docker 部署 Nginx 1.24.0 版本,并實(shí)現(xiàn)配置文件、日志和網(wǎng)站內(nèi)容的持久化管理。
準(zhǔn)備工作
在開始部署前,請(qǐng)確保你的環(huán)境已滿足以下條件:
- 已安裝 Docker 引擎(推薦版本 20.10 及以上)
- 具備基本的 Linux 命令操作能力
- 擁有服務(wù)器的 root 或 sudo 權(quán)限
- 可通過以下命令驗(yàn)證 Docker 是否正常運(yùn)行
docker --version # 查看 Docker 版本 systemctl status docker # 檢查 Docker 服務(wù)狀態(tài)
方法1:docker方式部署
步驟一:拉取Nginx鏡像
Docker 鏡像作為容器的模板,我們首先需要從 Docker Hub 拉取官方的 Nginx 鏡像??梢灾付ㄒ粋€(gè)具體的版本,也可以默認(rèn)拉取latest。
docker pull nginx:1.26.0
拉取完成后,可通過docker images命令查看本地鏡像列表,確認(rèn)nginx:1.26.0 已存在:
docker images
步驟二:創(chuàng)建宿主機(jī)目錄結(jié)構(gòu)
為了實(shí)現(xiàn) Nginx 配置、日志和網(wǎng)站內(nèi)容的持久化,避免容器刪除后數(shù)據(jù)丟失,我們需要在宿主機(jī)創(chuàng)建對(duì)應(yīng)的目錄結(jié)構(gòu)。推薦的目錄規(guī)劃如下:
- 創(chuàng)建主目錄
mkdir -p /opt/nginx
- 分別創(chuàng)建配置、日志和網(wǎng)站內(nèi)容目錄
mkdir -p /opt/nginx/conf # 存放 Nginx 主配置文件 mkdir -p /opt/nginx/conf/conf.d # 存放虛擬主機(jī)配置 mkdir -p /opt/nginx/log # 存放 Nginx 日志 mkdir -p /opt/nginx/html # 存放網(wǎng)站靜態(tài)文件
步驟三:獲取容器內(nèi)的默認(rèn)配置文件
Nginx容器內(nèi)置了默認(rèn)的配置文件,但這些文件存在于容器內(nèi)部。為了便于后續(xù)自定義配置,我們需要先通過一個(gè)臨時(shí)容器提取這些文件到宿主機(jī)的目錄中。
- 啟動(dòng)臨時(shí) Nginx 容器,執(zhí)行以下命令創(chuàng)建并啟動(dòng)一個(gè)臨時(shí)的 Nginx 容器:
docker run --name nginx -d nginx:1.26.0 # --name nginx:為容器指定名稱 # -d:以守護(hù)進(jìn)程模式運(yùn)行
- 復(fù)制容器內(nèi)的配置文件到宿主機(jī)
通過 docker cp 命令將容器內(nèi)的關(guān)鍵文件復(fù)制到之前創(chuàng)建的目錄中。
docker cp nginx:/etc/nginx/nginx.conf /opt/nginx/conf/nginx.conf
- 復(fù)制虛擬主機(jī)配置目錄 conf.d
docker cp nginx:/etc/nginx/conf.d /opt/nginx/conf/
- 復(fù)制默認(rèn)網(wǎng)站內(nèi)容目錄html
docker cp nginx:/usr/share/nginx/html /opt/nginx/
- 刪除臨時(shí)容器
配置文件已提取完成,臨時(shí)容器不再需要,執(zhí)行以下命令停止并刪除容器:
docker stop nginx docker rm nginx
步驟四:?jiǎn)?dòng)正式的 Nginx 容器
基于宿主機(jī)的持久化目錄,啟動(dòng)正式的 Nginx 容器,通過 -v 參數(shù)實(shí)現(xiàn)目錄掛載:
docker run --restart=always -d --name nginx \ -p 80:80 \ -v /opt/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /opt/nginx/conf/conf.d:/etc/nginx/conf.d \ -v /opt/nginx/log:/var/log/nginx \ -v /opt/nginx/html:/usr/share/nginx/html \ -v /mnt/volumn:/mnt/volumn \ nginx:1.26.0
命令參數(shù)說明:
–restart=always:設(shè)置容器隨 Docker 服務(wù)自動(dòng)啟動(dòng)(避免服務(wù)器重啟后容器未運(yùn)行)
-d:后臺(tái)運(yùn)行容器
–name nginx:指定容器名稱為 nginx
-p 80:80:端口映射(宿主機(jī) 80 端口:容器內(nèi) 80 端口,外部可通過服務(wù)器 IP:80 訪問)
-v 目錄掛載:
配置文件掛載:確保宿主機(jī)修改配置后無(wú)需重啟容器即可生效(需執(zhí)行 nginx -s reload)
日志掛載:便于在宿主機(jī)直接查看和分析 Nginx 日志
網(wǎng)站內(nèi)容掛載:直接在宿主機(jī)修改 /opt/nginx/html 目錄下的文件即可更新網(wǎng)站內(nèi)容
/mnt/volumn:/mnt/volumn:額外 掛載自定義目錄(可根據(jù)實(shí)際需求添加或刪除,例如用于存放靜態(tài)資源)
步驟五:驗(yàn)證 Nginx 容器運(yùn)行狀態(tài)
容器啟動(dòng)后,通過以下命令確認(rèn)是否正常運(yùn)行:
docker ps | grep nginx
查看容器詳細(xì)日志(排查啟動(dòng)失敗問題)
docker logs nginx
若容器正常運(yùn)行,可通過瀏覽器訪問服務(wù)器的 80 端口,應(yīng)顯示Nginx的默認(rèn)歡迎頁(yè)面
方法2:docker-compose方式部署
- 拉取鏡像
docker pull nginx:1.26.0
- 建立自定義網(wǎng)絡(luò)
docker network ls
docker network create --driver bridge my_switch
- 編寫docker-compose.yml文件
services: nginx: # 服務(wù)的名稱 自定義 image: nginx:1.26.0 container_name: nginx # 容器名稱 restart: always ports: - "80:80" volumes: - /opt/nginx/conf/nginx.conf:/etc/nginx/nginx.conf - /opt/nginx/html:/usr/share/nginx/html - /opt/nginx/conf/conf.d:/etc/nginx/conf.d - /opt/nginx/log:/var/log/nginx - /mnt/volume:/mnt/volume networks: - my_switch networks: my_switch: external: true # 指明該網(wǎng)絡(luò)是外部定義和管理的
- 啟動(dòng)容器
在docker-compose.yml文件所在的目錄下,打開終端或命令行界面,運(yùn)行以下命令
docker-compose up -d
結(jié)語(yǔ)
本文闡述的Docker部署Nginx方案,核心在于通過目錄掛載實(shí)現(xiàn)數(shù)據(jù)持久化,既保留了容器化部署的輕量特性,又解決了配置與數(shù)據(jù)的管理難題。這種模式在實(shí)際生產(chǎn)環(huán)境中極具實(shí)用價(jià)值。當(dāng)需要遷移服務(wù)時(shí),只需打包宿主機(jī)的 /opt/nginx目錄與啟動(dòng)命令,即可在新環(huán)境快速?gòu)?fù)現(xiàn)相同的運(yùn)行實(shí)例。
本文還分別介紹了docker原生和docker-compose工具兩種方式部署nginx的方法。個(gè)人比較推薦后者,docker-compose方式使得docker的運(yùn)維內(nèi)容都以yaml的方式保存下來(lái),使得后期運(yùn)維更加清晰明了,但docker原生的方式可以讓操作者更加熟悉docker底層的邏輯,也是一種加深學(xué)習(xí)映像的方式。
到此這篇關(guān)于Docker部署Nginx服務(wù)的兩種實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)Docker部署Nginx服務(wù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker 部署 Microsoft SQL Server 完全指南
本文詳細(xì)介紹如何使用Docker快速部署Microsoft SQL Server,提供兩種主流方式,兩種方式都包含了數(shù)據(jù)持久化、資源限制等生產(chǎn)環(huán)境所需的配置,并提供了詳細(xì)的參數(shù)說明和常見問題解決方法,感興趣的朋友跟隨小編一起看看吧2025-08-08查看docker是否處于啟動(dòng)狀態(tài)的方法詳解
Docker 是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,本文主要給大家介紹了查看docker是否處于啟動(dòng)狀態(tài)的方法,需要的朋友可以參考下2024-06-06Docker可視化ui管理工具Portainer安裝及使用解析
這篇文章主要介紹了Docker可視化ui管理工具Portainer安裝及使用解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11docker容器中登陸并操作postgresql的實(shí)現(xiàn)
本文主要介紹了docker容器中登陸并操作postgresql的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-02-02Linux服務(wù)器安裝Docker,啟動(dòng)失敗問題的解決
這篇文章主要介紹了Linux服務(wù)器安裝Docker,啟動(dòng)失敗問題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2023-04-04