Overlay文件系统是一种联合文件系统,可将多个目录(层)合并为单一视图,常用于容器技术(如Docker)。以下是具体步骤:
确保系统安装fuse-overlayfs(提供Overlay文件系统支持)及依赖包:
sudo yum install -y fuse-overlayfs device-mapper-persistent-data lvm2
Overlay需要四个核心目录:
lowerdir:只读基础层(存储原始文件);upperdir:可写层(存储修改后的文件);workdir:工作目录(存储临时文件,供Overlay内部使用);merged:合并视图(最终呈现的目录,用户访问的入口)。sudo mkdir -p /mnt/overlay/{lower,upper,work,merged}
使用mount命令将目录合并为单一视图:
sudo mount -t overlay overlay \
-o lowerdir=/mnt/overlay/lower,upperdir=/mnt/overlay/upper,workdir=/mnt/overlay/work \
/mnt/overlay/merged
lowerdir:指定只读基础层路径(可多个,用逗号分隔,如lowerdir=/dir1,/dir2);upperdir:指定可写层路径;workdir:指定工作目录路径;/mnt/overlay/merged:合并后的挂载点。通过df -h命令查看挂载状态,确认merged目录已成功挂载:
df -h /mnt/overlay/merged
若需系统重启后自动挂载,需将配置添加到/etc/fstab文件:
echo "overlay /mnt/overlay/merged overlay defaults,lowerdir=/mnt/overlay/lower,upperdir=/mnt/overlay/upper,workdir=/mnt/overlay/work 0 0" | sudo tee -a /etc/fstab
然后重新加载fstab配置:
sudo mount -a
向merged目录写入文件,验证upperdir是否捕获修改:
echo "Hello, Overlay!" | sudo tee /mnt/overlay/merged/test.txt
cat /mnt/overlay/upper/test.txt # 应输出相同内容
Overlay网络是Docker的虚拟网络驱动,允许不同主机上的容器通过VXLAN隧道通信。以下是配置步骤:
确保系统已安装Docker(CentOS 7+默认仓库包含docker-ce):
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl enable --now docker
编辑/etc/docker/daemon.json文件,设置overlay2为默认存储驱动(Overlay网络依赖overlay2):
sudo vim /etc/docker/daemon.json
添加以下内容(若文件为空,则直接写入):
{
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
保存后重启Docker服务:
sudo systemctl restart docker
使用docker network create命令创建Overlay网络,指定子网和网关:
docker network create \
--driver overlay \
--subnet=10.0.0.0/24 \
--gateway=10.0.0.1 \
my-overlay-network
--subnet:定义Overlay网络的IP段;--gateway:定义Overlay网络的网关;my-overlay-network:网络名称(自定义)。启动容器时,通过--network参数将其连接到Overlay网络:
docker run -d --name my-container --network my-overlay-network nginx
若容器已在运行,可使用docker network connect命令连接:
docker network connect my-overlay-network existing-container
docker network ls
docker network inspect my-overlay-network
若需实现跨主机容器通信,需确保:
cluster-store(如Consul)和cluster-advertise(主机IP及端口);4789/UDP);daemon.json配置(需替换为实际Consul地址):{
"cluster-store": "consul://consul-host:8500",
"cluster-advertise": "your-host-ip:2376"
}
重启Docker服务使配置生效:sudo systemctl restart docker
以上步骤覆盖了CentOS上Overlay的主要配置场景,可根据实际需求选择对应方案。