Docker 作为当今最流行的容器化技术,已成为现代软件开发和部署的重要工具。在 Ubuntu 24.04 LTS 系统上正确安装和配置 Docker,对于构建高效的开发环境至关重要。本教程基于 Docker 官方文档和 Ubuntu 官方指导,提供最新的安装步骤,并特别针对国内网络环境进行了优化,确保安装过程顺畅无阻。

教程概述

本教程将带你完成在 Ubuntu 24.04 (Noble Numbat) 上安装 Docker 和 Docker Compose 的完整过程。内容包括:

  • 环境准备:系统要求检查和前置条件
  • 官方安装:使用 Docker 官方源进行标准安装
  • 国内优化:配置阿里云等国内镜像源加速下载
  • 验证测试:确保安装成功并正常工作
  • 进阶配置:非root用户配置和镜像加速器设置
  • 问题解决:常见安装问题的解决方案

无论你是Docker新手还是有经验的开发者,本教程都将为你提供可靠的安装指导。


前提条件

  • 系统:Ubuntu 24.04 LTS (Noble Numbat),64 位版本
  • 权限:需要 root 或 sudo 权限
  • 网络:稳定的互联网连接,建议配置国内镜像源以加速下载
  • 最低内核版本:3.10(Ubuntu 24.04 默认满足)

步骤 1:卸载旧版本 Docker

为避免冲突,先卸载可能存在的旧版本 Docker 或相关组件:

1
2
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get autoremove

命令解释:

  • sudo apt-get remove:使用管理员权限删除指定的软件包
    • docker:旧版本的 Docker 软件包
    • docker-engine:旧版本的 Docker 引擎
    • docker.io:Ubuntu 官方仓库中的 Docker 包(非官方最新版)
    • containerd:容器运行时(将重新安装官方版本)
    • runc:低级容器运行时(将重新安装官方版本)
  • sudo apt-get autoremove:自动清理不再需要的依赖包,释放磁盘空间

注意:即使系统中没有安装这些包,执行此命令也不会产生错误,确保环境干净。

步骤 2:安装必要的依赖

更新系统并安装必要软件包以支持 HTTPS 和 GPG 密钥:

1
2
3
sudo apt update
sudo apt upgrade -y
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release

命令解释:

  • sudo apt update:更新软件包列表,从配置的源获取最新的包信息
  • sudo apt upgrade -y:升级系统中已安装的所有软件包到最新版本
    • -y:自动确认所有提示,无需手动输入 “yes”
  • sudo apt install -y:安装以下必需的软件包:
    • apt-transport-https:允许 apt 通过 HTTPS 协议下载包(Ubuntu 22.04+ 已内置)
    • ca-certificates:包含受信任的证书颁发机构证书,用于验证 HTTPS 连接
    • curl:命令行下载工具,用于获取 GPG 密钥
    • gnupg:GNU 隐私保护工具,用于处理 GPG 密钥和签名验证
    • lsb-release:提供 Linux 标准库信息,用于自动检测系统版本

提示:这些软件包确保系统能够安全下载和验证 Docker 官方软件包。

步骤 3:添加 Docker 官方 GPG 密钥

导入 Docker 官方 GPG 密钥以验证软件包:

1
2
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

命令解释:

  • curl -fsSL:下载文件的参数组合
    • -f:静默模式,遇到错误时立即退出
    • -s:静默模式,不显示进度条
    • -S:显示错误信息
    • -L:跟随重定向
  • https://download.docker.com/linux/ubuntu/gpg:Docker 官方 GPG 密钥的下载地址
  • |:管道符,将 curl 的输出传递给下一个命令
  • sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    • gpg --dearmor:将 ASCII 格式的 GPG 密钥转换为二进制格式
    • -o /etc/apt/keyrings/docker.gpg:指定输出文件路径
  • sudo chmod a+r /etc/apt/keyrings/docker.gpg:设置文件权限,允许所有用户读取密钥文件

国内用户优化:如果访问 download.docker.com 较慢,可使用阿里云镜像源:

1
2
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

安全说明:GPG 密钥用于验证从 Docker 仓库下载的软件包的真实性,防止恶意软件包。

步骤 4:添加 Docker 软件源

将 Docker 官方软件源添加到系统(默认使用 Noble 的稳定版仓库):

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

命令解释:

  • echo \:输出文本,\ 表示换行继续
  • deb [options] URL distribution component:Debian 软件源格式
    • arch=$(dpkg --print-architecture):自动检测系统架构(如 amd64)
    • signed-by=/etc/apt/keyrings/docker.gpg:指定用于验证的 GPG 密钥
    • https://download.docker.com/linux/ubuntu:Docker 官方软件源 URL
    • noble:Ubuntu 24.04 的代号
    • stable:使用稳定版分支
  • |:管道符,将 echo 输出传递给 tee 命令
  • sudo tee /etc/apt/sources.list.d/docker.list:将内容写入 Docker 源列表文件
  • > /dev/null:将 tee 的标准输出重定向到空设备,避免屏幕显示

国内用户优化:使用阿里云镜像源替代官方源:

1
2
3
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
noble stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

路径说明/etc/apt/sources.list.d/ 目录用于存放额外的软件源配置文件,避免修改主配置文件。

步骤 5:安装 Docker Engine 和相关组件

更新软件包索引并安装 Docker Engine、CLI、containerd 以及 Docker Compose 插件:

1
2
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

命令解释:

  • sudo apt update:更新软件包索引,获取新添加的 Docker 软件源中的包信息
  • sudo apt install -y:安装以下 Docker 相关组件:
    • docker-ce:Docker Community Edition 引擎,Docker 的核心服务
    • docker-ce-cli:Docker 命令行客户端,提供 docker 命令
    • containerd.io:容器运行时,负责管理容器的生命周期
    • docker-buildx-plugin:扩展构建功能的插件,支持多平台构建
    • docker-compose-plugin:Docker Compose V2 插件,提供 docker compose 命令

版本说明:这里安装的是最新稳定版本,包含了完整的 Docker 功能和现代化的工具链。

步骤 6:验证 Docker 安装

启动 Docker 服务并设置开机自启:

1
2
sudo systemctl start docker
sudo systemctl enable docker

命令解释:

  • sudo systemctl start docker:立即启动 Docker 服务
  • sudo systemctl enable docker:设置 Docker 服务开机自动启动

检查 Docker 是否安装成功:

1
2
sudo docker --version
sudo docker run hello-world

命令解释:

  • sudo docker --version:显示 Docker 版本信息,确认安装成功
  • sudo docker run hello-world:运行官方测试容器,验证 Docker 功能
    • 首次运行会自动下载 hello-world 镜像
    • 成功运行表示 Docker 引擎工作正常

预期输出:

  • Docker 版本信息(如 Docker version 27.3.1
  • hello-world 容器的欢迎信息,确认 Docker 正常工作

服务状态检查:可使用 sudo systemctl status docker 查看 Docker 服务运行状态。

步骤 7:验证 Docker Compose 安装(插件已包含)

自 Docker 20.10 起,Docker Compose V2 已作为 docker-compose-plugin 集成到 Docker CLI 中,步骤 5 已安装最新版本的 Compose 插件。

验证 Docker Compose 安装:

1
docker compose version

命令解释:

  • docker compose version:显示 Docker Compose 插件版本信息
    • 注意使用空格分隔的 docker compose,而非连字符的 docker-compose
    • 这是 Docker Compose V2 的标准调用方式

预期输出:

  • Docker Compose version v2.30.3(版本号会随时间更新)

版本说明

  • V2 优势:性能更好,功能更强,与 Docker CLI 深度集成
  • 命令格式:使用 docker compose 而非旧版 docker-compose
  • 兼容性:完全兼容现有的 docker-compose.yml 文件

注意:如果需要独立版 Compose(不推荐),可参考以下可选步骤。

可选:安装独立版 Docker Compose(V2)

如果需要独立版 Docker Compose(例如兼容旧项目),可手动下载二进制文件:

  1. 检查最新版本:访问 Docker Compose GitHub 发布页面

  2. 下载最新版本(以 v2.30.3 为例):

    1
    sudo curl -L "https://github.com/docker/compose/releases/download/v2.30.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

    命令解释:

    • sudo curl -L:使用管理员权限下载文件,-L 跟随重定向
    • $(uname -s):自动获取操作系统名称(如 Linux)
    • $(uname -m):自动获取系统架构(如 x86_64)
    • -o /usr/local/bin/docker-compose:指定下载文件的保存路径

    国内用户优化:使用国内镜像加速:

    1
    sudo curl -L "https://download.fastgit.org/docker/compose/releases/download/v2.30.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  3. 添加执行权限

    1
    sudo chmod +x /usr/local/bin/docker-compose

    命令解释:

    • sudo chmod +x:为文件添加可执行权限
    • /usr/local/bin/docker-compose:独立版 Docker Compose 的安装路径
  4. 验证安装

    1
    docker-compose --version

    命令解释:

    • docker-compose --version:显示独立版 Docker Compose 版本(注意使用连字符)

    预期输出:

    • Docker Compose version v2.30.3

路径说明/usr/local/bin/ 目录通常包含在系统 PATH 中,安装到此处的程序可在任何位置调用。

步骤 8:配置镜像加速(国内用户推荐)

国内访问 Docker Hub 可能较慢,建议配置镜像加速器(如阿里云或清华镜像):

  1. 编辑 Docker 配置文件

    1
    2
    sudo mkdir -p /etc/docker
    sudo nano /etc/docker/daemon.json

    命令解释:

    • sudo mkdir -p /etc/docker:创建 Docker 配置目录(如果不存在)
      • -p:递归创建目录,不报错如果已存在
    • sudo nano /etc/docker/daemon.json:使用 nano 编辑器创建/编辑 Docker 守护进程配置文件
  2. 添加以下内容(以阿里云为例,需替换为自己的加速器地址):

    1
    2
    3
    4
    5
    6
    7
    {
    "registry-mirrors": [
    "https://<你的阿里云加速器地址>.mirror.aliyuncs.com",
    "https://mirror.baidubce.com",
    "https://docker.m.daocloud.io"
    ]
    }

    配置说明:

    • registry-mirrors:指定镜像加速器列表,Docker 会按顺序尝试
    • 阿里云加速器:需登录阿里云容器镜像服务获取专属地址
    • 百度云镜像:公共加速器,无需注册
    • DaoCloud 镜像:国内知名的容器云服务商提供的加速器

    获取阿里云加速器:登录 阿里云容器镜像服务,在镜像加速器页面获取专属地址。

  3. 重启 Docker 服务

    1
    2
    sudo systemctl daemon-reload
    sudo systemctl restart docker

    命令解释:

    • sudo systemctl daemon-reload:重新加载 systemd 守护进程配置
    • sudo systemctl restart docker:重启 Docker 服务以应用新配置

    验证加速器配置

    1
    docker info | grep -A 5 "Registry Mirrors"
    • 应显示配置的镜像加速器地址列表

步骤 9:配置非 root 用户运行 Docker(可选)

默认情况下,Docker 命令需使用 sudo。若需以非 root 用户运行:

1
2
sudo usermod -aG docker $USER
newgrp docker

命令解释:

  • sudo usermod -aG docker $USER:将当前用户添加到 docker 用户组
    • usermod:修改用户账户的命令
    • -aG:追加(append)用户到组(group),保留现有组成员身份
    • docker:Docker 守护进程创建的系统用户组
    • $USER:环境变量,代表当前登录的用户名
  • newgrp docker:切换到 docker 组,立即生效新的组权限

生效方式:

  • 立即生效:执行 newgrp docker 命令
  • 重新登录:注销并重新登录系统
  • 重启终端:关闭并重新打开终端窗口

验证配置:

1
2
3
4
5
6
# 验证当前用户是否在 docker 组中
groups $USER

# 测试无 sudo 运行 Docker 命令
docker --version
docker run hello-world

安全提示:添加用户到 docker 组等同于给予 root 权限,因为 Docker 守护进程以 root 身份运行。请仅在受信任的环境中使用此配置。

常见问题处理

  1. 网络超时问题

    • 现象apt updatecurl 命令超时失败

    • 解决方案:检查网络连接或切换至国内镜像源(如阿里云或清华源)

    • 验证网络

      1
      2
      ping -c 4 8.8.8.8  # 测试网络连通性
      curl -I https://download.docker.com # 测试 Docker 官方源访问
  2. Docker 服务未启动

    1
    2
    sudo systemctl status docker
    sudo systemctl start docker

    命令解释:

    • sudo systemctl status docker:查看 Docker 服务当前状态
      • active (running):服务正常运行
      • inactive (dead):服务未启动
      • failed:服务启动失败
    • sudo systemctl start docker:手动启动 Docker 服务

    进一步诊断

    1
    2
    3
    4
    5
    # 查看 Docker 服务日志
    sudo journalctl -u docker.service -f

    # 检查 Docker 守护进程配置
    sudo dockerd --validate --config-file=/etc/docker/daemon.json
  3. 权限问题

    • 现象:普通用户运行 docker 命令提示 “permission denied”

    • 解决方案:确保以 root 或 sudo 权限执行命令,或按步骤 9 配置非 root 用户

    • 验证权限

      1
      2
      3
      4
      5
      # 检查当前用户组
      id $USER

      # 检查 Docker socket 权限
      ls -la /var/run/docker.sock
  4. 旧版 Compose 兼容性

    • 现象:项目依赖旧版 docker-compose(V1)命令

    • 解决方案:建议迁移到 V2 或安装独立版

    • 检查版本

      1
      2
      3
      4
      5
      # 检查 V2 插件版本
      docker compose version

      # 检查独立版本(如已安装)
      docker-compose --version
  5. 镜像拉取失败

    • 现象docker pulldocker run 时镜像下载超时

    • 解决方案:配置镜像加速器(参考步骤 8)

    • 验证加速器

      1
      2
      3
      4
      5
      # 查看 Docker 信息
      docker info | grep -A 5 "Registry Mirrors"

      # 测试拉取镜像
      docker pull hello-world

参考来源


总结

通过以上详细步骤,您已在 Ubuntu 24.04 (Noble Numbat) 上成功完成了 Docker 的完整安装和配置:

🎉 安装成果

  • Docker Engine:最新稳定版本,支持完整的容器化功能
  • Docker Compose V2:现代化的容器编排工具,性能更优
  • 镜像加速:配置国内镜像源,显著提升镜像下载速度
  • 用户权限:可选的非 root 用户配置,提升使用便利性
  • 服务自启:Docker 服务开机自动启动,确保环境可用

🔧 下一步建议

  1. 学习 Docker 基础

    1
    2
    3
    4
    5
    6
    # 拉取并运行常用镜像
    docker pull nginx
    docker run -d -p 8080:80 nginx

    # 查看运行中的容器
    docker ps
  2. 探索 Docker Compose

    1
    2
    3
    # 创建简单的 docker-compose.yml
    # 管理多容器应用
    docker compose up -d
  3. 构建自定义镜像

    1
    2
    3
    # 学习 Dockerfile 编写
    # 构建项目镜像
    docker build -t myapp .

🛠️ 维护提醒

  • 定期更新:保持 Docker 版本最新以获得安全修复和新功能
  • 清理资源:定期清理未使用的镜像和容器以释放磁盘空间
  • 监控服务:确保 Docker 服务运行状态良好

现在您已拥有一个完整、高效的 Docker 开发环境,可以开始您的容器化之旅了!如遇问题,请参考常见问题处理部分或查阅官方文档。