最快的方法:用 Docker 映像檔建立伺服器
如果新建伺服器,在映像檔列表中選擇 Docker 最快。以 Ubuntu 24.04 LTS 上已裝好 Docker Engine 和 Docker Compose 的狀態啟動,登入後即可執行 docker compose up。應用介紹和推薦規格見 Docker VPS 頁面。
想給已在用的伺服器加上 Docker,或想使用 Debian、AlmaLinux 等其他作業系統,請按下面的步驟自行安裝。所有命令均以 root 登入狀態為準。以普通使用者登入的話,請在命令前加上 sudo。
安裝前需要確認的事項
Docker 可以在任何大小的伺服器上運行。對於運行幾個容器的個人專案,最小的 12GB 通用方案已足夠;要同時運行資料庫、網頁伺服器和快取,24GB 或更多將提供更多空間。如果您經常下載和構建映像檔,使用磁碟速度更快的 NVMe VPS 會有明顯的差異。
如果有作業系統儲存庫中的舊版 Docker 軟體包,請先刪除,以免與官方軟體包混雜。未安裝的軟體包會被跳過,直接執行也沒關係。
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do apt remove -y $pkg; done在 Ubuntu 24.04 上安裝 Docker
第1步. 新增儲存庫金鑰和地址
apt update
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list第2步. 安裝 Docker Engine 和 Compose
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin安裝完成後 Docker 服務會自動啟動,伺服器重啟後也會一起啟動。同樣的命令在 Ubuntu 22.04 和 26.04 上也能直接使用。儲存庫地址中的版本名會自動從 /etc/os-release 讀取。
在 Debian 13 上安裝 Docker
Debian 的步驟與 Ubuntu 相同,只是儲存庫地址換成 linux/debian。Debian 12 也使用同樣的命令。
apt update
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin在 AlmaLinux 10 上安裝 Docker
AlmaLinux 和 Rocky Linux 使用 Docker 的 RHEL 儲存庫。為避免與預設自帶的 Podman 衝突,請先清理再安裝。AlmaLinux 9 和 Rocky Linux 9、10 也是同樣的命令。
dnf remove -y podman buildah runc
dnf -y install dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now docker首次安裝時詢問是否接受儲存庫簽名金鑰,按 y 即可。RHEL 系安裝後服務不會自動啟動,用最後一行 systemctl enable --now docker 立即啟動,並設為開機自啟。
確認安裝與第一個容器
用下面的命令執行一次測試容器。出現以 Hello from Docker 開頭的說明,就表示引擎、映像檔拉取和容器執行都正常。加上了 --rm,執行結束後容器會立即清理。
docker run --rm hello-world
docker compose version想讓普通使用者也能使用 Docker,請把該使用者加入 docker 組並重新登入。docker 組擁有與 root 相同的許可權,請只加入可信的使用者。
usermod -aG docker 使用者名稱用 Docker Compose 部署服務
Compose 是把容器配置寫進一個 YAML 檔案、一行命令啟動的方法。遷移或新建伺服器時,只要有同樣的檔案就能重建相同的環境。例如,啟動一個 Nginx 網站伺服器的檔案是這樣的。
mkdir -p /opt/web && cd /opt/web
cat > compose.yaml <<'EOF'
services:
web:
image: nginx:stable
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html:ro
restart: unless-stopped
EOF
docker compose up -d在瀏覽器中開啟 http://YOUR_SERVER_IP 會出現 Nginx 頁面。把 index.html 放進 html 資料夾,就會顯示該檔案。常用命令有下面四個就夠了。
docker compose ps:顯示目前執行的容器和連接埠。docker compose logs -f:實時跟蹤日誌。按 Ctrl+C 退出。docker compose pull && docker compose up -d:拉取新映像檔,把容器更新為新版本。docker compose down:停止並清理容器。卷中的資料原樣保留。
寫上 restart: unless-stopped,伺服器重啟時容器也會自動重新啟動。只有手動停止的容器會保持停止狀態。
防火牆與連接埠公開設定
Docker 會把透過 ports: 公開的連接埠直接寫入防火牆規則(iptables)開放。因此,即使 ufw 中沒有放行的連接埠,只要寫進 ports:,外部就能訪問。無需對外暴露的資料庫或管理介面,像下面這樣只繫結到 127.0.0.1,就只能在伺服器內部訪問。
ports:
- "127.0.0.1:5432:5432"網站服務只公開80和443連接埠,其餘服務在同一 Compose 網路內用服務名互相呼叫,乾淨利落。整台伺服器的基礎防火牆,請按照基礎防火牆指南只開放 SSH、HTTP、HTTPS。
日誌與磁碟管理
容器日誌如果不另行設定會持續累積。在 /etc/docker/daemon.json 中像下面這樣指定 local 日誌驅動,日誌會被壓縮,並只保留設定的大小。儲存後執行 systemctl restart docker,從新建的容器開始生效。
{
"log-driver": "local"
}不用的映像檔和已停止的容器也會佔用磁碟。用 docker system df 檢視用量,用 docker image prune -a 清理目前未使用的映像檔。資料增多後,也可以給伺服器掛載 NVMe 塊磁碟作為 Docker 資料目錄。
守護資料與下一步
容器可以隨時刪除重建,但卷中的資料無法重建。資料庫定期保留轉儲檔案,整台伺服器再用自動備份或快照一起守護,就很安心。方法見備份與快照指南。
用 Docker 部署 WordPress 的 Compose 檔案在 WordPress 安裝指南中。想在介面中部署多個應用並自動配上 HTTPS 證書,可以用 Coolify 或 Dokploy 映像檔建立伺服器。適合專門執行容器的規格整理在容器 VPS 中。
