Docker 部署 Nginx詳細(xì)攻略
在開始Nginx鏡像拉取與部署操作前,我們先簡要明確Nginx的核心價值與Docker部署的優(yōu)勢——這能幫助你更清晰地理解后續(xù)操作的意義。
關(guān)于 Nginx:核心功能與價值
Nginx 是一款輕量級、高性能的 HTTP 服務(wù)器與反向代理服務(wù)器,也是當(dāng)前企業(yè)級 Web 服務(wù)中最常用的組件之一。它的核心作用可概括為四大類:
- 靜態(tài)服務(wù):直接搭建靜態(tài)網(wǎng)頁服務(wù)(如官網(wǎng)、產(chǎn)品文檔、前端打包后的單頁應(yīng)用),支持高效處理靜態(tài)資源(HTML、CSS、JS、圖片等);
- 反向代理:作為客戶端與后端服務(wù)的“中間層”,轉(zhuǎn)發(fā)請求至后端 API 或應(yīng)用服務(wù)器(如 Tomcat、Node.js),隱藏真實(shí)服務(wù)地址,提升安全性;
- 負(fù)載均衡:面對高并發(fā)場景時,將請求均勻分發(fā)到多臺后端機(jī)器,避免單點(diǎn)服務(wù)器過載,保障服務(wù)穩(wěn)定性;
- SSL 終端:統(tǒng)一處理 HTTPS 加密解密,管理 SSL 證書,無需后端服務(wù)單獨(dú)配置 HTTPS,簡化整體架構(gòu)。
其最大特點(diǎn)是輕量(占用資源少)、穩(wěn)定(故障率低)、高并發(fā)(單實(shí)例可支撐數(shù)萬并發(fā)連接),因此成為中小微企業(yè)到大型互聯(lián)網(wǎng)公司的“標(biāo)配”服務(wù)組件。
為什么用 Docker 部署 Nginx?核心優(yōu)勢
傳統(tǒng)方式部署 Nginx(如通過 yum/apt 安裝、源碼編譯)常面臨環(huán)境不一致、依賴沖突、配置隔離差、遷移繁瑣等問題(例如:開發(fā)機(jī)上正常運(yùn)行的 Nginx,到生產(chǎn)服務(wù)器因系統(tǒng)庫版本不同啟動失?。欢喾?wù)混布時,Nginx 配置錯誤可能影響其他應(yīng)用)。而 Docker 部署能完美解決這些痛點(diǎn),核心優(yōu)勢如下:
- 環(huán)境絕對一致:Nginx 鏡像已打包所有運(yùn)行依賴(系統(tǒng)庫、配置模板、基礎(chǔ)環(huán)境),無論在開發(fā)機(jī)、測試機(jī)還是生產(chǎn)服務(wù)器,只要能運(yùn)行 Docker,Nginx 就能“開箱即用”,徹底避免“本地能跑、線上報錯”;
- 輕量高效:Docker 容器是進(jìn)程級隔離,比虛擬機(jī)占用資源少 80% 以上,Nginx 容器啟動僅需秒級,且可靈活限制 CPU/內(nèi)存占用,避免資源浪費(fèi);
- 服務(wù)隔離安全:Nginx 容器與主機(jī)、其他服務(wù)(如 MySQL、Redis)完全隔離,即使 Nginx 配置出錯或崩潰,也不會影響其他應(yīng)用,降低故障擴(kuò)散風(fēng)險;
- 快速迭代與回滾:更新 Nginx 只需拉取新鏡像、重啟容器(10 秒內(nèi)完成);若新版本有問題,刪除新容器、啟動舊版本鏡像即可回滾,比傳統(tǒng)部署的“卸載-重裝”高效 10 倍以上;
- 簡化運(yùn)維管理:通過
docker命令或docker-compose可一鍵實(shí)現(xiàn) Nginx 啟停、日志查看、狀態(tài)監(jiān)控(如docker logs nginx-web直接看日志),新手也能快速上手。
1、查看 Nginx 鏡像
你可以在 軒轅鏡像 中找到 Nginx 鏡像頁面:
?? https://xuanyuan.cloud/r/library/nginx
在頁面中會看到多種拉取方式,下面我們逐一說明。
2、下載 Nginx 鏡像
2.1 使用軒轅鏡像登錄驗(yàn)證的方式拉取
docker pull docker.xuanyuan.run/library/nginx:latest
2.2 拉取后改名
docker pull docker.xuanyuan.run/library/nginx:latest \ && docker tag docker.xuanyuan.run/library/nginx:latest library/nginx:latest \ && docker rmi docker.xuanyuan.run/library/nginx:latest
說明:
-
docker pull:從軒轅鏡像加速拉取鏡像 -
docker tag:將鏡像重命名為官方標(biāo)準(zhǔn)名稱library/nginx:latest,后續(xù)運(yùn)行命令更簡潔 -
docker rmi:刪除臨時鏡像標(biāo)簽,避免占用額外存儲空間
2.3 使用免登錄方式拉取(推薦)
基礎(chǔ)拉取命令:
docker pull xxx.xuanyuan.run/library/nginx:latest
帶重命名的完整命令:
docker pull xxx.xuanyuan.run/library/nginx:latest \ && docker tag xxx.xuanyuan.run/library/nginx:latest library/nginx:latest \ && docker rmi xxx.xuanyuan.run/library/nginx:latest
說明:
免登錄方式無需配置賬戶信息,新手可直接使用;鏡像內(nèi)容與 docker.xuanyuan.run 源完全一致,僅拉取地址不同。
2.4 官方直連方式
若網(wǎng)絡(luò)可直連 Docker Hub,或已配置軒轅鏡像加速器,可直接拉取官方鏡像:
docker pull library/nginx:latest
2.5 查看鏡像是否拉取成功
docker images
若輸出類似以下內(nèi)容,說明鏡像下載成功:
REPOSITORY TAG IMAGE ID CREATED SIZE
library/nginx latest f652ca386ed1 2 weeks ago 142MB
3、部署 Nginx
以下使用已下載的 library/nginx:latest 鏡像,提供三種部署方案,可根據(jù)場景選擇。
3.1 快速部署(最簡方式)
適合測試或臨時使用,命令如下:
# 啟動 Nginx 容器,命名為 nginx-test # 宿主機(jī) 80 端口映射到容器 80 端口(Nginx 默認(rèn)端口) docker run -d --name nginx-test -p 80:80 library/nginx:latest
核心參數(shù)說明:
-
--name nginx-test:為容器指定名稱,便于后續(xù)管理(如停止、重啟) -
-p 80:80:端口映射,格式為「宿主機(jī)端口:容器端口」 -
-d:后臺運(yùn)行容器
驗(yàn)證方式:
瀏覽器訪問 http://服務(wù)器IP,應(yīng)顯示 Nginx 官方歡迎頁。
3.2 掛載目錄(推薦方式,適合實(shí)際項(xiàng)目)
通過掛載宿主機(jī)目錄,實(shí)現(xiàn)「配置持久化」「日志分離」「網(wǎng)頁文件獨(dú)立管理」,步驟如下:
第一步:創(chuàng)建宿主機(jī)目錄
# 一次性創(chuàng)建 html(網(wǎng)頁)、conf(配置)、logs(日志)三個目錄
mkdir -p /data/nginx/{html,conf,logs}第二步:準(zhǔn)備測試網(wǎng)頁
# 向 html 目錄寫入測試內(nèi)容 echo "Hello from Xuanyuan Nginx!" > /data/nginx/html/index.html
第三步:啟動容器并掛載目錄
docker run -d --name nginx-web \ -p 80:80 -p 443:443 \ # 映射 HTTP(80) 和 HTTPS(443) 端口 -v /data/nginx/html:/usr/share/nginx/html \ # 網(wǎng)頁目錄掛載 -v /data/nginx/conf:/etc/nginx/conf.d \ # 配置目錄掛載 -v /data/nginx/logs:/var/log/nginx \ # 日志目錄掛載 library/nginx:latest
目錄映射說明:
宿主機(jī)目錄 | 容器內(nèi)目錄 | 用途 |
|---|---|---|
/data/nginx/html | /usr/share/nginx/html | 存放網(wǎng)頁文件(如 HTML、CSS) |
/data/nginx/conf | /etc/nginx/conf.d | 存放 Nginx 配置文件 |
/data/nginx/logs | /var/log/nginx | 存放訪問日志、錯誤日志 |
第四步:配置文件示例
新建 Nginx 基礎(chǔ)配置文件 /data/nginx/conf/default.conf:
server {
listen 80; # 監(jiān)聽 80 端口(HTTP)
server_name _; # 匹配所有域名(可替換為實(shí)際域名,如 example.com)
root /usr/share/nginx/html; # 網(wǎng)頁根目錄
index index.html; # 默認(rèn)首頁
access_log /var/log/nginx/access.log; # 訪問日志路徑
error_log /var/log/nginx/error.log; # 錯誤日志路徑
# 處理請求的核心規(guī)則
location / {
try_files $uri $uri/ =404; # 嘗試訪問文件/目錄,不存在則返回 404
}
}配置更新后重啟容器
修改配置文件后,需重啟容器使配置生效:
docker restart nginx-web
3.3 docker-compose 部署(適合企業(yè)級場景)
通過 docker-compose.yml 統(tǒng)一管理容器配置,支持一鍵啟動/停止,步驟如下:
第一步:創(chuàng)建 docker-compose.yml 文件
version: '3' # 指定 docker-compose 語法版本
services:
nginx:
image: library/nginx:latest # 使用的鏡像
container_name: nginx-service # 容器名稱
ports:
- "80:80" # HTTP 端口映射
- "443:443" # HTTPS 端口映射
volumes:
- ./html:/usr/share/nginx/html # 網(wǎng)頁目錄(相對路徑,與 yml 同目錄)
- ./conf:/etc/nginx/conf.d # 配置目錄
- ./logs:/var/log/nginx # 日志目錄
restart: always # 容器退出后自動重啟(保障服務(wù)可用性)第二步:啟動服務(wù)
在 docker-compose.yml 所在目錄執(zhí)行:
docker compose up -d
補(bǔ)充說明:
- 若需修改配置/網(wǎng)頁,直接操作當(dāng)前目錄下的
html、conf文件夾即可 - 停止服務(wù)命令:
docker compose down - 查看服務(wù)狀態(tài):
docker compose ps
4、結(jié)果驗(yàn)證
通過以下方式確認(rèn) Nginx 服務(wù)正常運(yùn)行:
瀏覽器驗(yàn)證:
訪問 http://服務(wù)器IP,應(yīng)顯示之前寫入的測試內(nèi)容(Hello from Xuanyuan Nginx!)或 Nginx 歡迎頁。
查看容器狀態(tài):
docker ps
若 STATUS 列顯示 Up,說明容器正常運(yùn)行。
查看容器日志:
以 nginx-web 容器為例(若用 docker-compose 則為 nginx-service):
docker logs nginx-web
無報錯信息即表示服務(wù)啟動正常。
5、常見問題
5.1 訪問不到網(wǎng)頁?
排查方向:
- 安全組:檢查云服務(wù)器安全組是否放行 80(HTTP)、443(HTTPS)端口
- 防火墻:檢查服務(wù)器本地防火墻(如
ufw或firewalld)是否開放對應(yīng)端口-
ufw開放端口:sudo ufw allow 80/tcp && sudo ufw allow 443/tcp -
firewalld開放端口:sudo firewall-cmd --add-port=80/tcp --permanent && sudo firewall-cmd --add-port=443/tcp --permanent && sudo firewall-cmd --reload
-
- 端口沖突:執(zhí)行
netstat -tuln | grep 80查看 80 端口是否被其他進(jìn)程占用,若占用需更換宿主機(jī)端口(如-p 8080:80)
5.2 如何啟用 HTTPS?
- 準(zhǔn)備證書:獲取 SSL 證書文件(通常包含
fullchain.pem證書鏈和privkey.pem私鑰),放到宿主機(jī)目錄(如/data/nginx/certs)。 - 掛載證書目錄:在容器啟動命令中添加證書掛載參數(shù):
-v /data/nginx/certs:/etc/nginx/certs
- 修改 Nginx 配置:更新
default.conf,添加 HTTPS 監(jiān)聽規(guī)則:
server {
listen 443 ssl; # 監(jiān)聽 443 端口(HTTPS)
server_name 你的域名; # 替換為實(shí)際域名(如 example.com)
# 證書路徑(容器內(nèi)路徑,對應(yīng)宿主機(jī) /data/nginx/certs)
ssl_certificate /etc/nginx/certs/fullchain.pem;
ssl_certificate_key /etc/nginx/certs/privkey.pem;
root /usr/share/nginx/html;
index index.html;
} 重啟容器:docker restart nginx-web
5.3 日志文件過大怎么辦?
方案1:使用 logrotate 切割日志(推薦):
在宿主機(jī)創(chuàng)建 /etc/logrotate.d/nginx 配置文件,設(shè)置日志切割規(guī)則(如按天切割、保留 7 天):
/data/nginx/logs/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0640 root root
} 方案2:日志收集系統(tǒng):
配合 ELK Stack(Elasticsearch + Logstash + Kibana)或 Loki 等工具,實(shí)現(xiàn)日志集中收集、存儲和分析。
5.4 容器內(nèi)時區(qū)不正確?
在啟動容器時,通過 -e 參數(shù)設(shè)置時區(qū)(以上海時區(qū) Asia/Shanghai 為例):
docker run -d -e TZ=Asia/Shanghai \ --name nginx-web \ -p 80:80 -p 443:443 \ -v /data/nginx/html:/usr/share/nginx/html \ -v /data/nginx/conf:/etc/nginx/conf.d \ -v /data/nginx/logs:/var/log/nginx \ library/nginx:latest
結(jié)尾
至此,你已掌握基于軒轅鏡像的Nginx鏡像拉取與Docker部署全流程——從鏡像下載驗(yàn)證,到不同場景的部署實(shí)踐,再到問題排查,每個步驟都配備了完整的操作命令和說明。對于初學(xué)者而言,建議先從「快速部署」熟悉流程,再嘗試「目錄掛載」方案理解持久化配置的意義,最后根據(jù)需求進(jìn)階到「docker-compose」管理。
在實(shí)際使用中,若遇到文檔未覆蓋的問題,可結(jié)合docker logs 容器名查看日志定位原因,或參考Nginx官方文檔補(bǔ)充學(xué)習(xí)。隨著實(shí)踐深入,你還可以基于本文基礎(chǔ),進(jìn)一步探索Nginx的反向代理、負(fù)載均衡、HTTPS高級配置等功能,讓Nginx更好地支撐你的業(yè)務(wù)需求。
到此這篇關(guān)于Docker 部署 Nginx 詳細(xì)手冊的文章就介紹到這了,更多相關(guān)Docker 部署 Nginx內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mac為docker和kubectl添加自動補(bǔ)全命令的方法
很多朋友不太明白如何為docker和kubectl添加自動補(bǔ)全命令,本文通過一些示例給大家介紹kubectl基礎(chǔ)概念及語法知識,需要的朋友參考下吧2021-06-06
Docker使用Buildx多架構(gòu)鏡像構(gòu)建指南
Docker Buildx支持多平臺鏡像構(gòu)建,解決ARM/x86架構(gòu)兼容性問題,提升部署效率,通過QEMU模擬與跨平臺功能,實(shí)現(xiàn)一次構(gòu)建多架構(gòu)鏡像,本指南將逐步介紹如何使用Buildx構(gòu)建多架構(gòu)鏡像,并優(yōu)化構(gòu)建性能,感興趣的朋友一起看看吧2025-08-08
Docker daemon 無法啟動: does not match with stored UUID錯誤解決辦法
這篇文章主要介紹了Docker daemon 無法啟動: does not match with stored UUID錯誤解決辦法的相關(guān)資料,需要的朋友可以參考下2016-11-11
Docker安裝MySQL及授權(quán)遠(yuǎn)程訪問的詳細(xì)教程
Docker是一種流行的容器化平臺,可以簡化應(yīng)用程序的部署和管理,下面這篇文章主要給大家介紹了關(guān)于Docker安裝MySQL及授權(quán)遠(yuǎn)程訪問的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-05-05
Centos中使用Docker安裝rabbitmq的問題記錄
這篇文章主要介紹了Centos中使用Docker安裝rabbitmq的問題記錄,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-05-05
Docker?Compose+Nginx+Certbot自動化部署HTTPS的詳細(xì)指南
打造屬于您的全自動?HTTPS?服務(wù),無需復(fù)雜配置,無需手動維護(hù),只需?3?個核心文件和?5?分鐘時間,即可實(shí)現(xiàn)永久自動化的?HTTPS?加密解決方案,下面我們就來看看具體方法吧2025-07-07

