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