Ubuntu Server 容器生態系搭建:Docker、Portainer、Harbor 安裝步驟詳解

by NickChi

檢查是否安裝了 Snap 版 Docker

首先,檢查系統是否已經安裝了 Snap 版 Docker:

snap list | grep docker

如果輸出類似以下內容,表示系統已安裝 Snap 版 Docker:

docker      20.10.21   canonical✓    -

停止並移除 Snap 版 Docker

1️⃣ 停止 Snap 版 Docker

sudo snap stop docker

2️⃣ 移除 Snap 版 Docker

sudo snap remove docker

3️⃣ 確保 Snap 版 Docker 完全刪除

sudo rm -rf /var/snap/docker

4️⃣ 確保標準 Docker 也被正確移除

如果你希望完全重新安裝 Docker,可以先移除所有舊的 Docker 版本:

sudo apt remove --purge docker.io docker-ce docker-ce-cli containerd.io -y
sudo rm -rf /var/lib/docker
sudo rm -rf /var/run/docker

Docker 環境安裝

1️⃣ 重新安裝標準 APT 版 Docker

更新系統套件列表

sudo apt update

安裝 Docker 官方 GPG 金鑰

sudo apt install -y ca-certificates curl gnupg
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.gpg > /dev/null
sudo chmod a+r /etc/apt/keyrings/docker.gpg

新增 Docker 官方安裝來源

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

更新系統並安裝 Docker

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io -y

啟動並設定 Docker 開機自動啟動

sudo systemctl enable docker
sudo systemctl start docker

確保 Docker 正常運行

1️⃣ 檢查 Docker 版本

docker --version

應該會顯示類似以下輸出:

Docker version 24.0.6, build ed223bc

2️⃣ 檢查 Docker 是否正在運行

sudo systemctl status docker

如果顯示 active (running),表示 Docker 已成功運行。

3️⃣ 測試 Docker 是否正常運行

sudo docker run hello-world

如果顯示 Hello from Docker!,表示 Docker 安裝成功!

4️⃣ 確保 Docker 權限正確

讓使用者不需要 sudo 也能執行 Docker:

sudo usermod -aG docker $USER
newgrp docker

然後重新登出 & 登入,或者執行:

sudo reboot

安裝 Portainer

1️⃣ 安裝 Portainer(使用 Docker Volume 儲存資料)

docker volume create portainer_data

docker run -d \
  --name portainer \
  --restart=always \
  -p 8000:8000 \
  -p 9443:9443 \
  --privileged \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

📌 參數說明:

  • --restart=always 👉 確保 Portainer 在重啟後自動啟動。
  • -p 8000:8000 👉 用於 Edge Agent 通訊(可選)。
  • -p 9443:9443 👉 Portainer Web UI 的 HTTPS 介面。
  • --privileged 👉 提供更高的權限,確保所有功能都可正常運行。
  • -v /var/run/docker.sock:/var/run/docker.sock 👉 允許 Portainer 直接管理 Docker 容器。
  • -v portainer_data:/data 👉 儲存 Portainer 配置資料,避免因重啟遺失。

2️⃣ 使用 HTTP 方式(不安全,但適合內部網路)

如果你希望使用 HTTP(非加密)模式(可用 http://<IP>:9000 來訪問 Portainer),請使用:

docker run -d \
  --name portainer \
  --restart=always \
  -p 9000:9000 \
  --privileged \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

📌 說明: Portainer Web UI 預設 HTTP 介面為 9000,如果不需要 HTTPS,可以使用此版本。


You may also like

Leave a Comment