Ubuntu 24.04 安装 Docker Engine

Ubuntu 24.04 安装 Docker Engine

本文档整理并总结 Ubuntu 24.04 LTS(Noble) 上安装 Docker Engine(非 Docker Desktop) 的完整、稳定、可复用方案,适用于开发机与生产/测试服务器场景。


一、安装目标与原则

安装内容

  • Docker Engine(docker-ce)
  • Docker CLI(docker-ce-cli)
  • containerd(由 Docker 管理)
  • docker-buildx-plugin
  • docker-compose-plugin(Compose v2)

明确不做的事情

  • ❌ 不使用 Docker Desktop
  • ❌ 不使用 snap 版 docker
  • ❌ 不安装 Python 版 docker-compose(已废弃)

适用场景

  • 多容器编排(docker compose)
  • Elasticsearch / MinIO / RAGFlow / Celery
  • 私有 Harbor 镜像仓库
  • 长期运行服务

二、清理历史残留(必须)

如果系统上 曾经安装过 docker / docker-desktop / snap docker,必须先清理:

bash 复制代码
sudo systemctl stop docker docker.socket containerd 2>/dev/null || true

sudo apt remove -y \
  docker \
  docker-engine \
  docker.io \
  docker-doc \
  docker-compose \
  docker-compose-v2 \
  podman-docker \
  docker-desktop

sudo rm -rf \
  /var/lib/docker \
  /var/lib/containerd \
  /etc/docker

sudo apt autoremove -y

确认 docker 不存在:

bash 复制代码
which docker || echo "docker not found"

三、安装基础依赖

bash 复制代码
sudo apt update
sudo apt install -y \
  ca-certificates \
  curl \
  gnupg \
  lsb-release

四、配置 Docker 官方仓库(Ubuntu 24.04 正确方式)

Ubuntu 24.04 同时支持 .list 和 .sources(deb822)
同一仓库只能保留一种方式,否则会导致 Signed-By 冲突

1️⃣ 清理旧的 Docker 源(关键)

bash 复制代码
sudo rm -f /etc/apt/sources.list.d/docker.sources
sudo rm -f /etc/apt/sources.list.d/docker*.list

2️⃣ 创建 keyrings 目录

bash 复制代码
sudo install -m 0755 -d /etc/apt/keyrings

3️⃣ 添加 Docker 官方 GPG Key(生成 docker.gpg)

bash 复制代码
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

4️⃣ 添加 Docker 官方 apt 源(noble)

bash 复制代码
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

5️⃣ 验证 Docker 源唯一性

bash 复制代码
grep -R "download.docker.com/linux/ubuntu" /etc/apt/sources.list /etc/apt/sources.list.d/* 2>/dev/null

期望结果 只有一条,且指向 docker.gpg。

五、安装 Docker Engine

bash 复制代码
sudo apt update
sudo apt install -y \
  docker-ce \
  docker-ce-cli \
  containerd.io \
  docker-buildx-plugin \
  docker-compose-plugin

六、启动 Docker 并设置开机自启

bash 复制代码
sudo systemctl enable docker
sudo systemctl start docker

查看状态:

bash 复制代码
systemctl status docker --no-pager

七、配置非 root 用户使用 Docker(强烈推荐)

bash 复制代码
sudo usermod -aG docker $USER
newgrp docker

验证无需 sudo:

bash 复制代码
docker ps

八、推荐的 Docker 全局配置(生产友好)

编辑配置文件:

bash 复制代码
sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json

推荐内容:

bash 复制代码
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "50m",
    "max-file": "3"
  },
  "exec-opts": ["native.cgroupdriver=systemd"],
  "storage-driver": "overlay2",
  "features": {
    "buildkit": true
  }
}

应用配置:

bash 复制代码
sudo systemctl daemon-reexec
sudo systemctl restart docker

九、验证清单(必须全部通过)

bash 复制代码
docker version
docker info | grep -E 'Cgroup|Storage Driver'
docker compose version

期望结果:

Cgroup Driver: systemd

Storage Driver: overlay2

Docker Compose v2.x

十、常见坑说明(Ubuntu 24.04 特有)

Signed-By 冲突错误示例

Signed-By: /etc/apt/keyrings/docker.gpg != /etc/apt/keyrings/docker.asc

原因

同时存在:

docker.list(signed-by=docker.gpg)

docker.sources(signed-by=docker.asc)

Ubuntu 24.04 会同时加载 .list 和 .sources

解决原则

同一仓库只能保留一种格式

本文统一使用:.list + docker.gpg

十一、与服务器场景强相关的附加建议

1️⃣ Elasticsearch 必须的内核参数

bash 复制代码
sudo sysctl -w vm.max_map_count=262144
echo "vm.max_map_count=262144" | sudo tee /etc/sysctl.d/99-elasticsearch.conf

2️⃣ 私有 Harbor / 内网仓库

后续可直接配置:

bash 复制代码
/etc/docker/certs.d/<harbor-domain>/

十二、结论


Ubuntu 24.04 上 Docker Engine + docker-compose-plugin 是最稳妥方案

Docker Desktop 在 Linux 上 没有必要

正确处理 .sources 与 .list 是 24.04 的关键点

相关推荐
赵民勇8 小时前
Linux/Unix中install命令全面用法解析
linux·shell
Rabbit_QL8 小时前
【网络设置】Docker 自定义网络深度解析:从踩坑到工程实践
网络·docker·容器
苏宸啊9 小时前
Linux指令篇(一)
linux·运维·服务器
我要升天!10 小时前
Linux中《网络基础》
linux·运维·网络
鸽芷咕10 小时前
【2025年度总结】时光知味,三载同行:落笔皆是沉淀,前行自有光芒
linux·c++·人工智能·2025年度总结
羑悻的小杀马特11 小时前
指尖敲代码,笔尖写成长:2025年度总结与那些没说出口的碎碎念
linux·c++·博客之星·2025年度总结
计算机小手11 小时前
使用 Poste.io 自建邮件服务器,Docker一键快速部署
经验分享·docker
晴天¥12 小时前
VMware+Oracle linux LVM/非LVM磁盘扩容
linux·运维·服务器
oMcLin12 小时前
如何在Oracle Linux 8.4上搭建并优化Kafka集群,确保高吞吐量的实时数据流处理与消息传递?
linux·oracle·kafka
worilb12 小时前
journalctl 与 tail 使用对比
linux