騰訊雲帳號購買優惠 騰訊雲香港節點部署 Docker 應用:容器網路與伺服器配置教程

騰訊雲國際 / 2026-10-10 20:07:30

# 騰訊雲香港節點部署 Docker 應用:容器網路與伺服器配置教程

## 一、這篇教程解決什麼問題

搜尋這個標題的使用者,通常不是想了解 Docker 或雲伺服器的概念,而是已經準備在騰訊雲香港節點上線應用,遇到以下實際問題:

- 不知道香港節點該怎麼選地域與機型
- 建好雲伺服器後,Docker 容器無法從公網訪問
- 安全組已放行,服務仍然打不開
- 容器端口映射正常,但應用還是連不上
- 想同時部署多個容器,不知道應該用 bridge、host 還是自定義網路
- 擔心香港節點訪問速度、網路延遲與出網配置
- 部署後不知道如何做基礎安全加固與性能調整

這篇文章直接按照實際上線流程來寫,目標是讓你從 0 到 1 在騰訊雲香港節點完成 Docker 應用部署,並能處理常見的網路與伺服器配置問題。

---

## 二、部署前的規劃:先決定伺服器與網路方案

在控制台開始建立實例前,先把幾個決策做對,後面會省很多排錯時間。

### 1. 地域與可用區怎麼選

如果你的業務面向:

- 香港本地使用者
- 中國大陸南方訪問者
- 東南亞訪問者
- 海外業務需要較穩定國際出口

那麼騰訊雲香港節點通常是常見選擇。

操作建議:

- 地域直接選擇 **香港**
- 可用區如果沒有明確容災需求,單台部署可優先選資源較充足的可用區
- 如果後續要做雙機高可用,應把應用層與資料層分散到不同可用區

### 2. 實例配置怎麼選

Docker 本身不吃很多資源,但容器內跑的應用很吃配置,因此不要只看 Docker。

常見場景建議:

騰訊雲帳號購買優惠 - 個人測試 / 小型站點:2 核 2G,50GB SSD 起步
- 中小型 Web 應用:2 核 4G 或 4 核 8G
- Java、Node.js、多容器部署:4 核 8G 起步
- 帶 MySQL / Redis 同機部署:不建議太低,至少 4 核 8G

磁碟建議:

- 系統盤:50GB 起
- 如果有日誌、上傳檔案、容器卷資料,建議額外配置資料盤
- Docker data 目錄若預期較大,最好單獨放資料盤,避免系統盤爆滿

### 3. 作業系統怎麼選

Docker 部署優先建議 Linux。

推薦:

- Ubuntu 22.04 LTS
- Ubuntu 20.04 LTS
- CentOS Stream / Rocky Linux / AlmaLinux(若你熟悉 RHEL 系系統)

如果是新手,建議直接用 **Ubuntu 22.04**,官方源與 Docker 安裝流程相對直觀。

---

## 三、在騰訊雲控制台建立香港雲伺服器

以下以 Linux 實例為例。

### 1. 購買流程

進入騰訊雲雲伺服器建立頁面後,按以下思路填參數:

1. **計費模式**:
- 測試用可先按量計費
- 穩定運行的正式環境可考慮包年包月

2. **地域**:選擇 **中國香港**

3. **可用區**:
- 單機應用可先選預設或資源可用區
- 若你有延遲測試需求,可先建立後實測,再決定是否遷移

4. **機型**:
- 通用型即可滿足大部分 Docker 應用
- 如果是高併發 API、計算任務,再考慮更高規格

5. **鏡像**:
- Ubuntu Server 22.04 LTS

6. **系統盤**:
- SSD 雲硬碟,50GB 起

7. **公網頻寬**:
- 若要直接提供外部訪問,必須分配公網 IP
- 頻寬依站點規模選擇,起步 3Mbps~5Mbps 可測試
- 若有大量靜態資源下載,應提高頻寬或搭配 CDN

8. **登入方式**:
- 優先使用 SSH 金鑰
- 若先用密碼,也請在上線後改為金鑰登入

9. **安全組**:
- 可先建立一個專用安全組,不要直接用過於寬鬆的預設規則

### 2. 建議開放的初始安全組端口

至少放行:

騰訊雲帳號購買優惠 - 22:SSH
- 80:HTTP
- 443:HTTPS

如果你要直接訪問應用測試,也可以臨時開:

- 8080
- 3000
- 5000
- 8000
- 9000

注意:

- 測試完成後,應只保留必要端口
- 不要把 3306、6379 直接對全網開放,資料庫應優先走私網或限制來源 IP

---

## 四、登入騰訊雲香港伺服器並做初始化配置

### 1. 使用 SSH 連線

本地終端執行:

```bash
ssh ubuntu@你的公網IP
```

如果是 root 使用者映像,則改為:

騰訊雲帳號購買優惠 ```bash
ssh root@你的公網IP
```

騰訊雲帳號購買優惠 若連不上,先檢查:

- 安全組是否放行 22
- 伺服器系統防火牆是否攔截
- 公網 IP 是否正確
- 本地網路是否限制 SSH

### 2. 更新系統

Ubuntu:

```bash
sudo apt update && sudo apt -y upgrade
```

### 3. 設定時區

香港常用時區:

```bash
sudo timedatectl set-timezone Asia/Hong_Kong
```

檢查:

```bash
timedatectl
```

### 4. 建立管理使用者並禁用 root 密碼直登(選做但建議)

```bash
sudo adduser deploy
sudo usermod -aG sudo deploy
```

如果你要配置 SSH 金鑰給 deploy:

```bash
sudo mkdir -p /home/deploy/.ssh
sudo cp ~/.ssh/authorized_keys /home/deploy/.ssh/
sudo chown -R deploy:deploy /home/deploy/.ssh
sudo chmod 700 /home/deploy/.ssh
sudo chmod 600 /home/deploy/.ssh/authorized_keys
```

---

## 五、安裝 Docker 與 Docker Compose

以下以 Ubuntu 為例。

### 1. 安裝必要套件

騰訊雲帳號購買優惠 ```bash
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
```

### 2. 加入 Docker 官方 GPG 金鑰與軟體源

```bash
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
```

```bash
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo $VERSION_CODENAME) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
```

### 3. 安裝 Docker Engine

```bash
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```

### 4. 驗證安裝

騰訊雲帳號購買優惠 ```bash
sudo docker version
sudo docker compose version
sudo systemctl status docker
```

### 5. 允許非 root 使用 docker

```bash
sudo usermod -aG docker $USER
newgrp docker
```

驗證:

```bash
docker ps
```

---

## 六、先理解部署關鍵:騰訊雲安全組、防火牆、Docker 端口三層都要通

很多人在香港節點部署 Docker 時,容器已經啟動,但外部打不開,通常是這三層其中一層沒通:

1. **騰訊雲安全組**
2. **Linux 系統防火牆**
3. **Docker 容器端口映射**

只放行其中一個不夠。

### 1. 騰訊雲安全組檢查

確保入站規則已放行你的應用端口,例如 80、443、8080。

如果你使用 Nginx 反向代理,通常只需要:

- 22
- 80
- 443

### 2. 系統防火牆檢查

Ubuntu 常見使用 ufw。

查看狀態:

騰訊雲帳號購買優惠 ```bash
sudo ufw status
```

如果啟用了 ufw,放行端口:

```bash
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 8080
```

重新檢查:

```bash
sudo ufw status numbered
```

### 3. Docker 端口映射檢查

例如容器內應用監聽 3000,對外映射 8080:

```bash
docker run -d --name app -p 8080:3000 your-image
```

檢查:

```bash
docker ps
```

如果只看到容器啟動,但應用仍無法訪問,再執行:

```bash
docker logs app
ss -tulnp | grep 8080
```

你要確認的是:

- 容器內應用真的在 3000 監聽
- 主機的 8080 真的被 docker-proxy 或 iptables 接管
- 安全組與 ufw 都已開放 8080

---

## 七、Docker 容器網路配置:單容器與多容器的正確做法

這是本教程最重要的部分。很多部署失敗不是因為 Docker 壞掉,而是網路方式選錯。

### 1. 什麼情況用 bridge

騰訊雲帳號購買優惠 大多數情況都應先用 **bridge**,尤其是:

- 單個 Web 應用
- Nginx + App 多容器
- Node.js / Python / PHP 應用
- 需要端口映射對外提供服務

騰訊雲帳號購買優惠 啟動範例:

```bash
docker run -d \
--name webapp \
-p 80:3000 \
your-image
```

這代表:

- 容器內服務跑在 3000
- 公網請求打到伺服器 80 端口
- Docker 轉發到容器 3000

### 2. 什麼情況用 host

只有在你非常清楚需求時才考慮 `--network host`,例如:

- 需要極簡網路層
- 某些高性能、低延遲場景
- 特定服務需要直接使用主機網卡

但缺點也明顯:

- 端口衝突更直接
- 隔離性較差
- 排錯時更容易混淆主機服務與容器服務

香港節點部署一般 Web 應用,不建議上來就用 host。

### 3. 多容器應用建議使用自定義 bridge 網路

騰訊雲帳號購買優惠 例如你有:

- nginx
- app
- redis

先建立網路:

```bash
docker network create app-net
```

啟動 redis:

```bash
docker run -d \
--name redis \
--network app-net \
redis:7
```

啟動 app:

```bash
docker run -d \
--name app \
--network app-net \
-e REDIS_HOST=redis \
your-app-image
```

啟動 nginx:

```bash
docker run -d \
--name nginx \
--network app-net \
-p 80:80 \
nginx:latest
```

好處是:

- 容器之間可以直接用容器名互相訪問
- 不需要把 redis 端口暴露到公網
- 網路結構更清晰,適合正式環境

### 4. Docker Compose 實戰配置

建立 `docker-compose.yml`:

```yaml
services:
app:
image: your-app-image
container_name: app
restart: unless-stopped
expose:
- "3000"
networks:
- app-net

nginx:
image: nginx:latest
container_name: nginx
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- app
networks:
- app-net

networks:
app-net:
driver: bridge
```

騰訊雲帳號購買優惠 啟動:

```bash
docker compose up -d
```

查看:

```bash
docker compose ps
docker network ls
docker network inspect app-net
```

---

## 八、香港節點上部署 Docker Web 應用的推薦架構

騰訊雲帳號購買優惠 如果你是正式環境,建議不要把應用容器直接暴露在 3000、8080 之類端口給用戶,而是採用以下方式:

### 推薦結構

- 公網訪問 → Nginx 容器(80/443)
- Nginx 反向代理 → App 容器(3000/5000 等內部端口)
- Redis / MySQL 僅內網或容器網路可訪問

這種做法有幾個實際好處:

- 外部只需開 80/443,安全組規則更簡單
- 容器升級時對外端口不變
- 可以更容易接入 HTTPS
- 多個應用可統一由 Nginx 轉發

### Nginx 反向代理範例

`nginx.conf` 可簡化為:

```nginx
events {}
http {
server {
listen 80;
server_name _;

騰訊雲帳號購買優惠 location / {
proxy_pass http://app:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
```

在同一 Docker 網路內,`proxy_pass http://app:3000;` 中的 `app` 就是容器名或服務名。

---

## 九、公網 IP、私網與端口開放的正確配置思路

### 1. 公網 IP 配置

如果你需要讓外部用戶直接訪問你的 Docker 應用,雲伺服器必須具備:

- 已分配公網 IP
- 已開通公網頻寬
- 安全組已放行對應端口

如果伺服器只有私網 IP,外部用戶無法直接訪問。

### 2. 私網適合什麼場景

如果你有多台騰訊雲資源,例如:

- 一台 ECS 跑應用
- 一台 MySQL 實例
- 一台 Redis 或其他後端服務

建議資料層走私網,不要把資料庫直接暴露到公網。

### 3. 端口開放原則

正式環境應遵循:

- 對外只開必要端口
- SSH 限制來源 IP 更安全
- 資料庫端口只對私網或特定來源開放
- 臨時測試端口用完即關

---

## 十、Docker 應用部署實戰:從映像到可訪問服務

以下給一個最常見的上線示例:部署一個內部監聽 3000 的 Web 應用。

### 1. 拉取映像或上傳應用

如果是你自己的映像:

```bash
docker pull your-image:latest
```

### 2. 建立應用目錄

```bash
mkdir -p ~/docker-app
cd ~/docker-app
```

### 3. 建立 Compose 文件

```yaml
services:
app:
image: your-image:latest
container_name: app
restart: unless-stopped
ports:
- "8080:3000"
environment:
- NODE_ENV=production
```

### 4. 啟動服務

```bash
docker compose up -d
```

### 5. 檢查容器狀態

```bash
docker compose ps
docker logs app --tail 100
```

### 6. 本機測試

在伺服器上測:

```bash
curl http://127.0.0.1:8080
```

如果本機可通,但外部不可通,通常是:

- 安全組沒放行 8080
- ufw 沒放行 8080
- 公網 IP 或頻寬沒配置

---

## 十一、香港節點網路優化與延遲測試建議

香港節點常被用來承接跨境流量,因此部署後最好做簡單測試,而不是只看容器有沒有跑起來。

### 1. 測試基礎網路連通

```bash
ping 你的公網IP
```

注意:有些環境禁 ICMP,不通不代表 HTTP 一定不通。

### 2. 測試端口可達性

本地可用:

騰訊雲帳號購買優惠 ```bash
curl -I http://你的公網IP
```

或:

```bash
telnet 你的公網IP 80
```

### 3. 查看伺服器監聽情況

```bash
ss -tulnp
```

重點看:

- 80
- 443
- 8080
- 你的應用端口

### 4. 檢查路由與出口

```bash
traceroute 目標IP
```

如果你發現部分地區到香港節點延遲偏高,可考慮:

- 將靜態資源接入 CDN
- 應用層使用反向代理快取
- 避免在容器中直接做大量同步外部請求
- 對資料庫與應用分層部署,不要所有服務擠在單機

---

## 十二、伺服器性能與 Docker 基礎優化

### 1. 檢查資源占用

```bash
top
free -h
df -h
docker stats
```

重點看:

騰訊雲帳號購買優惠 - 記憶體是否不足
- CPU 是否長期打滿
- 系統盤是否快滿
- 容器是否有異常飆高資源占用

### 2. 避免日誌撐爆磁碟

很多容器服務不是掛掉,而是磁碟被 Docker 日誌寫滿。

可在 `/etc/docker/daemon.json` 設定:

```json
{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
```

重啟 Docker:

```bash
sudo systemctl restart docker
```

### 3. 調整開機自啟

Docker 服務:

```bash
sudo systemctl enable docker
```

容器層建議加:

```yaml
restart: unless-stopped
```

### 4. 資料卷持久化

不要把重要資料只放在容器內部。

例如:

```yaml
services:
app:
image: your-image
volumes:
- ./data:/app/data
```

這樣容器重建後,資料仍在宿主機。

騰訊雲帳號購買優惠 ---

## 十三、常見故障排查:香港節點 Docker 應用打不開怎麼辦

下面是最常見的問題清單,按順序查最快。

### 問題 1:容器啟動了,但瀏覽器打不開

排查順序:

1. 看容器是否真的在跑

```bash
docker ps
```

2. 看日誌

```bash
docker logs 容器名 --tail 100
```

3. 看端口是否映射

```bash
docker ps
ss -tulnp | grep 8080
```

4. 在伺服器本機 curl

```bash
curl http://127.0.0.1:8080
```

5. 查安全組
6. 查 ufw
7. 查公網 IP 是否存在

騰訊雲帳號購買優惠 ### 問題 2:安全組放行了還是打不開

常見原因:

- 應用只監聽 `127.0.0.1`,沒監聽 `0.0.0.0`
- Docker 映射端口與容器實際監聽端口不一致
- 主機防火牆攔截
- Nginx 反向代理配置錯了上游地址

例如很多 Node.js 應用預設只監聽 localhost,要改成:

```bash
0.0.0.0
```

### 問題 3:容器之間無法互訪

檢查:

```bash
docker network ls
docker network inspect app-net
```

確認:

- 兩個容器是否在同一網路
- 是否使用容器名訪問
- 是否把 `localhost` 錯當成另一個容器

注意:

- 在容器裡 `localhost` 指的是容器自己,不是宿主機,也不是其他容器

### 問題 4:映像能跑,本地正常,放到騰訊雲香港節點就異常

可能原因:

- 環境變數沒帶齊
- 容器依賴外部資源,但香港節點出口訪問受限或延遲高
- 時區導致應用邏輯異常
- 系統磁碟空間不足
- DNS 解析問題

可先檢查:

```bash
env
df -h
cat /etc/resolv.conf
```

### 問題 5:80 端口被占用

查看:

```bash
sudo lsof -i :80
```

如果宿主機已安裝 nginx/apache,會和 Docker 映射衝突。

處理方式:

- 停掉宿主機服務
- 或改用其他宿主機端口
- 或把反向代理統一放在宿主機,不要再開 nginx 容器

---

## 十四、HTTPS 配置建議

如果你的香港節點要正式對外服務,建議盡快加 HTTPS。

常見做法:

- Nginx 容器終止 SSL
- 證書掛載到容器內
- 對外只開 80 與 443

如果你已經有域名:

1. 先把域名 A 記錄解析到騰訊雲香港節點公網 IP
2. 確保 80/443 已在安全組放行
3. 用 Nginx 或 Certbot 完成證書配置

如果暫時只是測試,可以先上 HTTP,等服務穩定後再加 HTTPS。

---

## 十五、備份、快照與重裝前注意事項

Docker 應用常見誤區是只備份映像,不備份資料。

真正需要備份的是:

- Compose 文件
- `.env` 環境變數
- 掛載卷資料
- Nginx 配置
- 資料庫資料
- 上傳檔案

### 1. 騰訊雲快照建議

在做以下操作前,建議先建立雲硬碟快照:

- 系統升級
- 大版本應用更新
- Docker data 目錄遷移
- 重裝系統

### 2. 匯出容器配置

騰訊雲帳號購買優惠 建議把部署檔案放 Git:

- `docker-compose.yml`
- `nginx.conf`
- `.env.example`
- 部署腳本

這樣就算重建香港節點實例,也能快速恢復。

---

## 十六、適合正式環境的部署最佳實踐

如果你希望部署完之後更穩定,建議至少做到以下幾點:

1. **只暴露 80/443,其他服務放內網或容器內網**
2. **應用使用自定義 Docker 網路,不要全部 default bridge**
3. **使用 Compose 管理,不要全靠手工 docker run**
4. **限制日誌大小,避免磁碟打滿**
5. **定期備份掛載資料與資料庫**
6. **安全組最小化開放規則**
7. **系統與 Docker 定期更新,但更新前先做快照**
8. **應用監聽地址設為 0.0.0.0,不要只綁 localhost**
9. **使用 Nginx 做反向代理與 HTTPS 終止**
10. **把資料庫與快取從公網暴露中移除**

---

## 十七、快速部署檢查清單

如果你只想快速確認部署是否完整,可按這份清單核對:

- [ ] 騰訊雲地域已選香港
- [ ] 實例已分配公網 IP
- [ ] 安全組已放行 22/80/443 或必要應用端口
- [ ] Linux 防火牆已同步放行端口
- [ ] Docker 與 Compose 已安裝成功
- [ ] 容器已正常啟動
- [ ] 應用監聽 `0.0.0.0`
- [ ] 容器端口映射正確
- [ ] 多容器已加入同一自定義網路
- [ ] Nginx 反向代理指向正確服務名
- [ ] `curl 127.0.0.1:端口` 本機測試正常
- [ ] 外部瀏覽器可正常訪問
- [ ] 日誌輪替與資料持久化已配置
- [ ] 關鍵資料已備份或建立快照

---

## 十八、結語

在騰訊雲香港節點部署 Docker 應用,真正容易出問題的不是安裝 Docker,而是 **伺服器、公網、安全組、防火牆、容器網路、端口映射** 這幾層配置沒有打通。

如果你想降低排錯成本,最穩的做法是:

- 香港節點建立 Linux 雲伺服器
- 配置公網 IP 與最小必要安全組規則
- 安裝 Docker 與 Docker Compose
- 使用自定義 bridge 網路管理多容器
- 用 Nginx 對外暴露 80/443
- 應用、Redis、MySQL 僅在內部網路互通
- 部署後用 `docker logs`、`ss -tulnp`、`curl` 分層排查

按這套流程做,大部分香港節點 Docker 部署問題都能在較短時間內定位並解決。

Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系