学习 CentOS 中的 Overlay(OverlayFS),可以从“概念 → 使用 → 实战 → 排错”四个阶段来系统学习。下面给你一个比较清晰的学习路线。
Overlay(OverlayFS) 是一种 联合文件系统(Union Filesystem),特点是:
核心概念:
merged = lower + upper
uname -r
lsmod | grep overlay
# 或
modprobe overlay
mkdir -p /mnt/overlay/{lower,upper,work,merged}
lower:只读层upper:可写层work:Overlay 内部使用(必须和 upper 同文件系统)merged:挂载后看到的目录echo "lower file" > /mnt/overlay/lower/a.txt
mount -t overlay overlay \
-o lowerdir=/mnt/overlay/lower,upperdir=/mnt/overlay/upper,workdir=/mnt/overlay/work \
/mnt/overlay/merged
cat /mnt/overlay/merged/a.txt
echo "new file" > /mnt/overlay/merged/b.txt
查看变化:
ls /mnt/overlay/upper
rm /mnt/overlay/merged/a.txt
whiteout 文件(c---------)-o lowerdir=/l1:/l2:/l3
Docker 默认存储驱动:
docker info | grep Storage
常见:
Docker 镜像层 = overlay lower
容器层 = overlay upper
学习建议:
docker run -it centos bash
# 在容器里改文件
# 宿主机查看 /var/lib/docker/overlay2
mount -t overlay overlay \
-o lowerdir=/etc,upperdir=/var/overlay/etc_upper,workdir=/var/overlay/etc_work \
/etc
workdir and upperdir must be on same filesystem
/etc/fstab:
overlay /mnt/merged overlay defaults,lowerdir=/l,upperdir=/u,workdir=/w 0 0
man overlayman mount如果你愿意,我可以:
你现在是偏 运维 / 容器 / 系统底层 哪个方向?