你好!你在跟随利用 GitHub Webhook 构建自动部署系统的系列文章吗?如第三篇提到的,Docker 在我们的 CI/CD 管道中扮演着关键角色。

这篇文章将详细介绍如何在未安装 Docker 的服务器上逐步安装 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。但在我们的自动部署系统中,需要以普通用户身份通过 systemd 服务运行 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 构建个人自动部署系统(第三篇),继续进行下一步。通过 Docker 容器化项目并实现自动部署的精彩体验正等着你!