温馨提示×

ubuntu overlay怎么正确配置

小樊
34
2025-11-24 10:11:29
栏目: 智能运维

Ubuntu 中 Overlay 的正确配置指南

一 场景与准备

  • 明确用途:常见有两类
    • 文件系统层叠:用 OverlayFS 将只读层与可写层叠加,常用于只读根文件系统、构建/测试环境等。
    • 容器网络:用 Docker Overlay 网络 让多主机容器互通。
  • 环境要求
    • 内核版本建议 ≥ 3.18(OverlayFS 自该版本引入)。
    • 安装常用工具:
      • 文件系统层叠:sudo apt update && sudo apt install -y fuse-overlayfs
      • 容器网络:sudo apt install -y docker-ce docker-ce-cli containerd.io
  • 基本概念
    • lowerdir:只读层(基础镜像/只读目录)。
    • upperdir:可写层(新增/修改的文件放在这里)。
    • workdir:OverlayFS 内部工作目录(必须与 upperdir 在同一文件系统)。
    • merged:合并后的统一视图挂载点。

二 配置 OverlayFS 文件系统层叠

    1. 创建目录结构
    • 示例:
      • 只读层:/mnt/lower(可指向只读镜像或现有目录)
      • 可写层:/mnt/overlay/upper
      • 工作目录:/mnt/overlay/work
      • 挂载点:/mnt/overlay/merged
    • 命令:
      • sudo mkdir -p /mnt/lower /mnt/overlay/{upper,work,merged}
    1. 手动挂载
    • 命令:
      • sudo mount -t overlay overlay -o lowerdir=/mnt/lower,upperdir=/mnt/overlay/upper,workdir=/mnt/overlay/work /mnt/overlay/merged
    1. 开机自动挂载(/etc/fstab)
    • /etc/fstab 追加:
      • overlay /mnt/overlay/merged overlay defaults,lowerdir=/mnt/lower,upperdir=/mnt/overlay/upper,workdir=/mnt/overlay/work 0 0
    • 应用:
      • sudo mount -a
    1. 验证
    • mount | grep overlay
    • df -h /mnt/overlay/merged
    • ls /mnt/overlay/merged
    1. 卸载
    • sudo umount /mnt/overlay/merged
    1. 只读根文件系统(可选,使用 overlayroot)
    • 安装:sudo apt install -y overlayroot
    • 编辑:sudo nano /etc/overlayroot.conf,将 enabled=yes,并按需设置 lowerdir/upperdir/workdir/mergedir(多数场景使用默认配置即可,修改前务必备份)。
    • 提示:启用后系统根分区将变为只读叠加视图,写入会落到 upper 层;如需回滚,可在引导菜单选择不启用 overlayroot 的条目。

三 配置 Docker Overlay 网络(容器跨主机通信)

    1. 安装并启动 Docker
    • sudo apt install -y docker-ce docker-ce-cli containerd.io
    • sudo systemctl start docker && sudo systemctl enable docker
    1. 初始化 Swarm(跨主机需要)
    • sudo docker swarm init(如已加入集群可跳过)
    1. 创建 Overlay 网络
    • sudo docker network create --driver overlay my-overlay
    1. 运行容器并连接
    • sudo docker run -dit --name c1 --network my-overlay ubuntu
    • sudo docker run -dit --name c2 --network my-overlay ubuntu
    1. 验证
    • sudo docker exec -it c1 ping c2
    • 管理:docker network lsdocker network inspect my-overlaydocker network rm my-overlay

四 常见问题与排查

  • 内核与版本
    • 确保内核 ≥ 3.18;过旧内核不支持 OverlayFS。
  • 目录与权限
    • upperdirworkdir 必须在同一文件系统;目录需存在且权限正确(建议使用 root 操作)。
  • 只读根与持久化
    • 使用 overlayroot 时,系统盘写入会进入 upper 层;如需持久化数据,请将数据目录放在 overlay 之外并单独挂载。
  • fstab 与启动失败
    • 先在命令行测试 mount -a 无误再重启;如配置错误导致无法启动,可在引导菜单选择不启用 overlayroot 的条目或使用 LiveCD 修正 /etc/fstab
  • 容器网络限制
    • Overlay 网络用于多主机场景;单机使用意义有限。
  • 多 lowerdir 写法
    • 需要多个只读层时,用冒号分隔:lowerdir=/lower1:/lower2[:...]

0