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

相关推荐
LHICOD12 分钟前
Linux-2
java·linux·后端·jar·vmware·svm·vm
余额瞒着我当琳18 分钟前
Linux初识:Linux的历史,计算机的发展脉络,发行版本,选购云服务器,安装Xshell,第一次连接,基础命令指南
linux·运维·服务器
时间售卖铺36 分钟前
Docker实战:一键部署轻量级容器
运维·docker·云原生
垆边人似月.40 分钟前
RDMA 文件传输踩坑(四):从固定延时改造为 READY/ACK 协议
linux·服务器·网络
水饺编程42 分钟前
第2章:Linux 基础,制作【.tar.xz】压缩包文件
linux·c语言·汇编
阿里云基础软件1 小时前
Agent 任务提速 10.71%,内存占用降低 21.60%|Alibaba Cloud Linux 4 重大发布
java·linux·人工智能·操作系统·agent
m0_743697592 小时前
DNS的反向域名的相关问题
linux
Android系统攻城狮2 小时前
Linux FFmpeg深度解析之avcodec_parameters_from_context调用流程与实战(十六)
linux·运维·ffmpeg·音视频进阶·ffmpeg音视频·车载音视频进阶
思想觉悟2 小时前
SEAndroid实战
android·linux·c++
前进吧-程序员3 小时前
C++20 协程实战:手写 Task、单线程调度器与 awaiter 的三个钩子
linux