您好!您在跟隨使用 GitHub Webhook 構建自動部署系統系列文章嗎?正如第三篇中提到的,Docker 在我們的 CI/CD 管道中扮演著核心角色。

這篇文章是為了還沒有在伺服器上安裝 Docker 的朋友們而寫,將逐步詳細說明在 Ubuntu 伺服器上安裝 Docker EngineDocker Compose 的方法。

升級到最新的 Docker 版本

1. 移除舊版本(可選)

如果您之前安裝了 Docker 的非官方版本,建議您首先將其徹底移除。請執行以下命令以刪除可能會引起衝突的現有包。

sudo apt-get remove --purge docker docker-engine docker.io containerd runc docker-compose

如果沒有重要數據並希望徹底重置,建議完全刪除舊版 Docker 的痕跡進行初始化。

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
  • 注意:此命令會刪除所有容器和映像數據,如果數據很重要,請先備份。

2. 設置 Docker 官方存儲庫

為了穩定地安裝 Docker 的最新版本,需要設置官方 APT 存儲庫。

# 更新 apt 包
sudo apt-get update

# 安裝設置 Docker 官方存儲庫所需的包
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

# 添加 Docker 的官方 GPG 密鑰
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 將 Docker 存儲庫添加到 APT 存儲庫
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 APT 存儲庫
sudo apt-get update

3. 安裝 Docker Engine

現在安裝 Docker Engine 和相關工具。

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

上述命令將作為插件一起安裝 Docker Engine、CLI 工具、容器運行時(containerd.io)、以及 Docker Compose。

4. 確認 Docker 安裝

請通過執行 hello-world 容器來確認安裝是否完成。此命令是一個簡單測試,用以檢驗 Docker 是否正常運作。

sudo docker run hello-world

如果顯示 "Hello from Docker!" 的消息,則表示 Docker Engine 已正常安裝。

5. 無需 sudo 使用 Docker 命令(必須)

一般情況下,執行 docker 命令需要使用 sudo。不過,在我們的自動部署系統中,必須用一般用戶帳戶執行 docker,因此需要設置權限以便無需 sudo 使用 docker 命令。

  1. 將當前用戶添加至 docker 群組。
sudo usermod -aG docker $USER
  1. 為了應用更改,必須登出後再登錄。

  2. 重新登錄後,再次執行 sudo 無需的 docker run hello-world 命令以確認其正常運行。

6. 確認 Docker Compose 安裝

因為已安裝 docker-compose-plugin,所以不需要額外安裝過程。請使用以下命令確認 docker compose 是否正常安裝。

docker compose version

如果顯示 "Docker Compose version v2.x.x" 的消息,則表示成功。

7. 總結

現在您的伺服器已經擁有 Docker 和 Docker Compose。現在請關閉這篇文章,回到我們的主系列利用 GitHub Webhook 建立自己的自動部署系統(第 3 篇),以繼續下一步。透過 Docker 將項目容器化並自動部署的美好體驗正等著您!