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 的关键点

相关推荐
Trouvaille ~21 小时前
【项目篇】从零手写高并发服务器(六):EventLoop事件循环——Reactor的心脏
linux·运维·服务器·c++·高并发·epoll·reactor模式
bai_lan_ya21 小时前
linux -- 文件IO
linux·服务器
道清茗21 小时前
【Kubernetes知识点问答题】常规维护管理操作 / ETCD 备份与恢复
docker·kubernetes·etcd
林鸿群21 小时前
Ubuntu 26.04 本地安装 GitLab CE 完整教程(非 Docker 方式)
linux·ubuntu·gitlab·私有部署·代码托管·ubuntu 26.04·omnibus
YuQiao030321 小时前
国内安装claude code
ubuntu·claude·vibe coding
勇闯逆流河21 小时前
【Linux】Linux进程概念(进程优先级,进程切换详解)
linux·运维·服务器
老师好,我是刘同学21 小时前
30个核心Linux命令速查手册
linux
fsj2009yx21 小时前
如何把无公网的求生之路2服务器借助VPS转发注册到steam master列表中
linux·wireguard·求生之路2
慵懒的猫mi21 小时前
deepin UOS AI 助手接入飞书(Feishu)配置指南
linux·人工智能·ai·gpt-3·飞书·文心一言·deepin
Jiozg21 小时前
ES安装到linux(ubuntu)
linux·ubuntu·elasticsearch