overlay网络要求内核≥3.10,overlay2存储驱动需≥3.18,推荐≥4.0;centos 7需通过elrepo升级内核并加载overlay模块,避免误用overlay网络于单机compose场景。

Compose 本身不直接管理 Overlay 网络,它依赖 Docker 引擎的网络能力;而 Docker 的 overlay 网络驱动(用于 Swarm 模式)或 overlay2 存储驱动(默认容器层技术)都对内核有明确要求。在低内核版本 Linux(如 CentOS 7 默认 3.10、某些旧发行版甚至低于 3.18)上运行时,常见报错包括:
"unknown filesystem type 'overlay'"(存储驱动失败)
"overlay network requires kernel version 3.10 or higher" 或启动 Swarm 失败(网络驱动不可用)
确认并升级内核至最低兼容版本
Overlay 网络(Swarm 模式)要求内核 ≥ 3.10;OverlayFS 文件系统(overlay2 存储驱动)要求 ≥ 3.18;Docker 官方推荐 ≥ 4.0 以确保完整功能稳定。
- 执行
uname -r查看当前内核版本 - CentOS 7:启用 elrepo 源后安装较新内核(如 5.15 LTS):
sudo yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpmsudo yum --enablerepo=elrepo-kernel install kernel-ml - 升级后需更新 GRUB 并重启,再通过
grubby --set-default /boot/vmlinuz-$(ls /boot/vmlinuz-*ml* | tail -n1 | sed 's/.*vmlinuz-//')设为默认启动项
确保 overlay 内核模块已加载且开机自启
即使内核满足版本要求,若 overlay 模块未启用,Docker 仍无法使用 overlay2 存储驱动或 Swarm overlay 网络。
- 检查是否已加载:
lsmod | grep overlay—— 若无输出,说明未加载 - 手动加载:
sudo modprobe overlay - 配置开机自动加载:
echo "overlay" | sudo tee /etc/modules-load.d/overlay.conf - 验证:重启后再次运行
lsmod | grep overlay,应可见模块列表
避免误用 overlay 网络驱动于单机 Compose 场景
普通 docker-compose.yml 默认使用 bridge 网络,无需 Overlay 支持。只有以下情况才真正需要 Overlay 网络:
- 使用
docker stack deploy部署 Swarm 服务 - 显式在
docker-compose.yml中定义driver: overlay并在 Swarm 模式下部署
若只是本地开发调试,建议改用默认 bridge 网络,或升级 Docker Desktop(含内置高版本内核)替代低内核宿主机部署。
检查 Docker 配置与日志定位根本原因
部分报错看似是 Compose 引起,实为 Docker 启动阶段失败导致。
- 查看 Docker 是否正常运行:
sudo systemctl status docker - 检查 daemon 日志:
sudo journalctl -u docker.service -n 50 --no-pager | grep -i -E "(overlay|error|failed)" - 确认
/etc/docker/daemon.json中未错误启用不兼容选项(如"storage-driver": "overlay"—— 应为"overlay2";或存在"overlay2.override_kernel_check": true等危险绕过项)











