在Docker容器中運行Nginx的詳細教程
前言
Nginx 是一款高性能 Web 服務器,常被用作反向代理、負載均衡器以及內(nèi)容緩存。它以高效與靈活著稱,是提供靜態(tài)文件服務、流量管理和提升應用速度的首選解決方案。而當你將 Nginx 運行在 Docker 容器中時,還能進一步獲得可移植性、快速部署和更整潔的管理體驗。
本教程將帶你從零開始學習如何使用 Docker 部署 Nginx。內(nèi)容包括:
- 拉取官方鏡像
- 在 Docker 容器中運行 Nginx
- 映射端口并訪問服務
- 使用自定義配置文件和 HTML 內(nèi)容
- 管理容器
- 使用 Docker Compose 管理多容器環(huán)境
完成后,你將能夠以快速、干凈、可重復的方式運行屬于你自己的 Nginx 服務。
一、運行 Nginx 所需的前提條件
在開始之前,請確保具備以下條件:
- 擁有 VPS 主機訪問權限
如果你還沒有,可以考慮 云廠商 等提供的 VPS 托管方案。 - 服務器上已安裝 Docker
- 熟悉基本的 Docker 命令
- 已安裝 Docker Compose(用于高級配置)
重要提示
Docker 命令通常需要 sudo 權限。
你可以將當前用戶添加到 Docker 用戶組以免每次都輸入 sudo。
本教程中為簡潔起見省略了 sudo,你可根據(jù)實際環(huán)境調(diào)整。
二、拉取 Nginx 官方 Docker 鏡像
要啟動 Nginx,首先需要從 Docker Hub 拉取官方鏡像:
docker pull nginx
該命令會獲取最新的穩(wěn)定版 Nginx 鏡像。推薦始終使用官方鏡像,因為它由 Nginx 團隊維護,更新及時且無冗余內(nèi)容。
下載完成后,運行以下命令驗證鏡像是否存在:
docker images
在輸出結果的“REPOSITORY”列中查找 nginx 即可確認。

三、以分離模式運行 Nginx 容器
有了鏡像后,可以啟動一個名為 nginx-server 的容器:
docker run -d --name nginx-server -p 80:80 nginx
命令說明:
-d:讓容器在后臺運行(Detached 模式)--name:為容器命名-p 80:80:將主機的 80 端口映射到容器的 80 端口
Detached 模式意味著容器在后臺持續(xù)運行,不占用當前終端,非常適合 Nginx 這類長期運行的服務。
驗證容器運行狀態(tài):
docker ps

然后在本地測試訪問:
curl http://localhost:80
成功后,你將看到 Nginx 默認歡迎頁:

四、端口映射與訪問控制
默認情況下,Nginx 在容器內(nèi)部監(jiān)聽 80 端口。
使用 -p 參數(shù)可以指定主機與容器端口的映射:
docker run -d --name nginx-alt -p 8080:80 nginx
這樣,外部訪問 http://localhost:8080 即可訪問容器內(nèi)部的 80 端口。
如果出現(xiàn)“port already allocated”錯誤,說明端口被占用,可以使用 lsof -i :80 或 netstat 檢查端口使用情況。

五、自定義 Nginx 配置文件
你可以通過掛載自定義配置文件來實現(xiàn)反向代理、緩存、SSL 或其他高級功能。
創(chuàng)建配置文件:
nano nginx.conf
示例配置(將請求代理到 http://127.0.0.1:3000):
worker_processes 1;
events {
worker_connections 1024;
}
http {
server {
listen 80;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
}
運行帶自定義配置的容器:
docker run -d --name nginx-reverse-proxy \ -p 8080:80 \ -v /full/path/to/nginx.conf:/etc/nginx/nginx.conf:ro \ nginx
-v 參數(shù)掛載本地配置文件到容器內(nèi),并設置只讀模式(:ro)。
測試代理是否生效:
curl http://localhost:8080
若需修改配置,修改文件后執(zhí)行:
docker restart nginx-reverse-proxy
六、掛載靜態(tài)網(wǎng)站內(nèi)容
Nginx 最常見的用途之一是托管靜態(tài)網(wǎng)頁。
只需將本地網(wǎng)站目錄掛載到容器內(nèi):
docker run -d --name nginx-static \ -p 8080:80 \ -v /path/to/site:/usr/share/nginx/html:ro \ nginx
這樣,Nginx 會自動從 /usr/share/nginx/html 提供內(nèi)容。默認配置支持 HTML、CSS、JS、圖片等基礎類型。
若需重定向、自定義緩存規(guī)則或訪問控制,可再定義自有 nginx.conf。
七、管理 Nginx 容器
常用命令如下:
停止容器
docker stop nginx-server
啟動容器
docker start nginx-server
重啟容器
docker restart nginx-server
查看日志
docker logs nginx-server
刪除容器
docker stop nginx-server docker rm nginx-server
保持環(huán)境整潔有助于避免端口沖突和資源浪費。

八、使用 Docker Compose 管理 Nginx
當項目包含多個容器時,Docker Compose 可以讓部署更簡單。
創(chuàng)建 docker-compose.yml 文件:
version: '3'
services:
nginx:
image: nginx
container_name: nginx-compose
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html:ro
- ./nginx.conf:/etc/nginx/nginx.conf:ro
在同一目錄下執(zhí)行:
docker-compose up -d
停止并清理:
docker-compose down
九、多服務協(xié)同部署(Nginx + 后端)
Docker Compose 也可以同時運行前后端服務,例如 Node.js + Nginx。
示例 docker-compose.yml:
version: '3'
services:
backend:
build: ./backend
container_name: node-app
ports:
- "3000:3000"
networks:
- app-network
nginx:
image: nginx
container_name: nginx-proxy
ports:
- "8080:80"
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- backend
networks:
- app-network
networks:
app-network:
這樣,Nginx 將通過網(wǎng)絡連接到后端容器,實現(xiàn)流量轉發(fā)。
結語
至此,你已經(jīng)學會如何:
- 從官方鏡像運行 Nginx
- 使用自定義配置或靜態(tài)資源
- 管理容器生命周期
- 通過 Docker Compose 構建多服務架構
Nginx + Docker 的組合能讓部署更高效、環(huán)境更干凈、遷移更方便。無論是搭建個人網(wǎng)站還是構建復雜微服務體系,這都是最穩(wěn)妥的起點。
以上就是在Docker容器中運行Nginx的詳細教程的詳細內(nèi)容,更多關于Docker運行Nginx的資料請關注腳本之家其它相關文章!
相關文章
使用docker離線部署dify之docker鏡像問題及部署過程
這篇文章主要給大家介紹了關于使用docker離線部署dify之docker鏡像問題及部署過程,通過配置多個鏡像源解決了,此外還介紹了如何將Dify鏡像轉移到離線環(huán)境并啟動服務,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-04-04
docker部署Macvlan實現(xiàn)跨主機網(wǎng)絡通信的實現(xiàn)
這篇文章主要介紹了docker部署Macvlan實現(xiàn)跨主機網(wǎng)絡通信的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-10-10
Docker中鏡像構建與緩存優(yōu)化實戰(zhàn)指南
在實際項目中,我們需要一套完善的鏡像構建與緩存優(yōu)化方案,以提升構建速度,降低帶寬與存儲成本,保證構建穩(wěn)定性,下面我們就來看看具體實現(xiàn)方法吧2025-07-07

