Docker 已成为现代软件开发和部署的基石。无论使用的是 Red Hat Enterprise Linux (RHEL)、CentOS、Ubuntu 还是 Debian,本教程都将遵循 Docker 官方推荐的方法,指导如何在主流 Linux 系统上一步步成功安装 Docker Community Edition (Docker-CE)。

前提条件

*\t一台正在运行受支持的 Linux 发行版服务器。 *\t一个拥有 sudo 权限的用户账户。 *\t服务器可以连接到互联网。

第一步:卸载旧版本

在开始之前,最好先卸载任何可能存在的、与 Docker 相关的旧版本软件包,以避免潜在的冲突。

sudo yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine  # 适用于 RHEL/CentOS

sudo apt-get remove docker docker-engine docker.io containerd runc # 适用于 Debian/Ubuntu

即使不确定是否安装过,运行相应的命令也是安全的。

第二步:根据 Linux 发行版设置 Docker 仓库

这是整个安装过程中最关键的一步。需要告知系统的包管理器去哪里下载 Docker-CE。

对于 RHEL / CentOS 系统

  1. 安装 yum-utils : 这个软件包提供了一个名为 yum-config-manager 的工具,可以方便地添加新的软件仓库。

    sudo yum install -y yum-utils
  2. 添加 Docker 官方仓库 : 使用 yum-config-manager 添加 Docker 的稳定版仓库。注意:虽然 URL 中包含 centos,但这正是 Docker 官方为 RHEL 和其他基于 RPM 的发行版提供的正确仓库。

    sudo yum-config-manager \
        --add-repo \
        https://download.docker.com/linux/centos/docker-ce.repo
对于 Debian / Ubuntu 系统
  1. 更新 apt 包索引并安装依赖

    sudo apt-get update
    sudo apt-get install \
        ca-certificates \
        curl \
        gnupg \
        lsb-release
  2. 添加 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
  3. 设置 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 Engine

现在,仓库已经配置好了,可以直接使用系统的包管理器来安装 Docker Engine 了。

对于 RHEL / CentOS 系统

该命令会安装 Docker 引擎本身、命令行工具以及所有必要的依赖。

sudo yum install -y docker-ce docker-ce-cli containerd.io
对于 Debian / Ubuntu 系统
  1. 更新 apt 包索引

    sudo apt-get update
  2. 安装 Docker-CE

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

安装完成后,可以通过运行 docker --version 来验证 Docker 是否已成功安装到系统中。

第四步:启动并启用 Docker 服务

Docker 安装后并不会自动运行,需要手动启动它,并将其设置为开机自启。这一步对于所有使用 systemd 的现代 Linux 发行版(包括 RHEL, CentOS, Ubuntu, Debian)都是相同的。

  1. 启动 Docker 服务

    sudo systemctl start docker
  2. 设置 Docker 开机自启

    sudo systemctl enable docker
  3. 检查 Docker 服务状态

    sudo systemctl status docker

    如果看到 Active: active (running) 的绿色字样,说明 Docker 服务已经成功运行起来了。

第五步:配置非 root 用户权限(重要)

默认情况下,只有 root 用户和 docker 用户组的成员才能运行 Docker 命令。为了避免每次都输入 sudo,推荐将当前用户添加到 docker 用户组。

  1. 创建 docker 用户组 (通常在安装时已自动创建,但运行一下无妨):

    sudo groupadd docker
  2. 将当前用户添加到 docker$USER 是一个环境变量,它会自动替换为当前用户名。

    sudo usermod -aG docker $USER
  3. 激活用户组变更这一步至关重要! 为了让用户组的变更生效,必须退出当前的 SSH 会话,然后重新登录,或者运行 newgrp docker 来立即应用新的组成员身份。

第六步:验证安装

重新登录服务器后,现在即可作为一个普通用户来运行 Docker 命令,验证一切是否正常。

运行经典的 hello-world 镜像:

docker run hello-world

如果看到类似下面的输出,即表示 Docker 已在该 Linux 系统上成功安装并运行。

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
... (省略拉取过程)
Digest: sha256:...
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.
...
常见问题排查
  • 网络问题 :如果服务器需要通过代理访问互联网,请确保为 Docker 配置了代理。这通常通过创建 ~/.docker/config.json 文件或设置 HTTP_PROXY 等环境变量来完成。

  • 防火墙 :系统防火墙(如 firewalldufw )可能会阻止容器的网络访问。Docker 会自动管理一些网络规则,但如果存在非常严格的防火墙策略,可能需要手动允许 Docker 相关的流量。

结语

遵循本指南,即可在 Linux 系统上成功安装现代化的容器引擎 Docker-CE。现在,可以开始探索容器化的世界,部署应用,享受 Docker 带来的便利和高效。