Docker 容器化讓部署 Web Server 變得簡單且可控,本文將帶你從零開始學 Docker 安裝、配置 Nginx 與 Apache 容器,完整介紹端口映射、資料掛載、多容器同時運行,並示範內網與外網訪問方式,幫助新手快速上手 Docker Web Server 部署。
Docker 與 Web Server 簡介
Docker 提供輕量化容器環境,可快速部署 Nginx 與 Apache,並避免互相干擾。每個容器內部端口(如 HTTP 80 埠)為服務提供端口,需透過端口映射才能在本地或外部訪問。學習 Docker 容器概念對新手管理多個 Web Server 容器非常重要。
| 項目 | 說明 |
|---|---|
| 容器化 | Web Server 可獨立運行,不受其他服務影響 |
| 端口映射 | 將容器內部端口對應到主機端口,方便訪問 |
| Volume | 掛載本地資料到容器,方便修改網頁內容 |
Docker 安裝與基本指令
新手可依次使用以下指令安裝 Docker,啟動服務並驗證版本,建立基礎環境以便後續部署 Nginx 與 Apache 容器:
| 項目 | 指令 | 說明 |
|---|---|---|
| 更新 apt 套件清單 | sudo apt update | 更新本機套件列表 |
| 安裝 Docker | sudo apt install -y docker.io | 安裝 Docker 引擎 |
| 啟動 Docker 服務 | sudo systemctl start docker | 啟動 Docker |
| 開機自動啟動 Docker | sudo systemctl enable docker | 開機自動啟動 Docker |
| 查看 Docker 版本 | docker --version | 確認 Docker 安裝成功 |
| 查看 Docker 服務狀態 | sudo systemctl status docker | 確認 Docker 正常運行 |
Nginx 與 Apache 容器部署
建立 Nginx 與 Apache 容器,並將容器內 80 埠映射到主機不同端口,方便內網測試與外網訪問,以下案例供新手參考:
# 啟動 Nginx
docker run -d --name nginx-server -p 8080:80 nginx:latest
# 啟動 Apache
docker run -d --name apache-server -p 8081:80 httpd:latest
# 查看容器
docker ps
# 停止容器
docker stop nginx-server
docker stop apache-server
使用 Docker Compose 同時管理多容器:
version: '3.8'
services:
nginx:
image: nginx:latest
container_name: nginx-server
ports:
- "8080:80"
volumes:
- ./nginx/html:/usr/share/nginx/html
apache:
image: httpd:latest
container_name: apache-server
ports:
- "8081:80"
volumes:
- ./apache/html:/usr/local/apache2/htdocs/
端口映射與內外網訪問說明
容器內 Nginx 與 Apache 都預設使用 80 埠提供 HTTP 服務。為了同時啟動多個容器,我們將容器內部 80 埠映射到不同的主機端口:
- Nginx → 主機端口 8080
- Apache → 主機端口 8081
內部測試時:
- http://localhost:8080 → 訪問 Nginx
- http://localhost:8081 → 訪問 Apache
外部訪問時(假設防火牆對外 IP 為 203.0.113.10):
- http://203.0.113.10:8080 → 訪問 Nginx
- http://203.0.113.10:8081 → 訪問 Apache
如果希望外部訪問使用標準 80/443 埠,則需要透過:
- 反向代理(Reverse Proxy)
- 防火牆端口轉發(iptables DNAT / MASQUERADE)
將不同網域導向不同容器的 80 埠。
FAQ 常見問題
如何確認 Docker 容器是否啟動?
使用 docker ps 列出正在運行的容器,包括容器名稱和映射端口,方便新手確認 Nginx 或 Apache 是否正常運行。
如何停止或刪除容器?
透過 docker stop 停止容器,docker rm 刪除容器,可避免端口衝突,適合新手管理多個容器。
如何查看容器日誌?
使用 docker logs 容器名稱 查看運行日誌,方便排查錯誤或確認服務狀態,是新手學習 Docker 內部運作的重要方法。
如何修改容器內網頁內容?
透過 Volume 掛載本地資料夾,如 nginx/html 或 apache/html,即可直接修改網頁並立即生效。
容器內部端口與本地端口的關係?
容器內部端口 80 提供 HTTP 服務,本地端口 8080/8081 映射到容器端口,瀏覽器即可訪問不同容器,對學習 Docker 多容器部署非常實用。
如何同時啟動多個 Web 容器?
需使用不同本地端口,例如 Nginx 8080、Apache 8081,避免端口衝突,確保多容器同時運行,是新手必學的配置技巧。
如何讓外網使用標準 HTTP/HTTPS 端口?
必須透過反向代理或防火牆端口轉發,將不同網域導向不同容器 80 埠,使外網訪問使用標準 80/443 埠,對 Docker 多容器運行與網站部署非常關鍵。
Docker Compose 可以同時管理多個容器嗎?
可使用 docker-compose up -d 同時啟動 Compose 文件中所有容器,docker-compose down 停止並刪除,非常適合新手快速管理多容器環境。
