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

相关推荐
艾莉丝努力练剑7 分钟前
【QT】Qt常用控件与布局管理深度解析:从原理到实践的架构思考
linux·运维·服务器·开发语言·网络·qt·架构
qq_3961534510 分钟前
docker ddns-go 忘记密码
docker·容器·golang
格林威18 分钟前
Linux系统工业相机:Linux udev 规则绑定相机设备
linux·运维·开发语言·人工智能·数码相机·计算机视觉·工业相机
Zhu75820 分钟前
【软件部署】用docker部署Apache Kafka 集群架构的isolated模式
docker·kafka·apache
IMPYLH20 分钟前
Linux 的 mv 命令
linux·运维·服务器·bash
AAA_搬砖达人小郝20 分钟前
Docker常用命令(2026最新)
开发语言·docker
weixin_4235339922 分钟前
虚拟机-ubuntu突然连不上网,网络图标消失
linux·运维·ubuntu
zzzsde27 分钟前
【Linux】进程间通信(3)system V信号量
linux·运维·服务器
无效的名字27 分钟前
windows下,怎么压缩Docker Desktop占用的磁盘空间
windows·docker·容器
峥无29 分钟前
Linux 调试效率革命:CGDB
linux·运维·服务器