Overlay配置在CentOS中主要涉及文件系统层叠(用于合并目录视图)和Docker网络跨主机通信(用于容器间虚拟网络)两大场景。以下是分场景的关键步骤:
Overlay文件系统通过“底层目录(lowerdir)”“上层目录(upperdir)”“工作目录(workdir)”三层结构,将多个目录合并为一个可写视图,常用于容器镜像分层或数据隔离。
确保系统安装fuse-overlayfs(用户态Overlay文件系统工具)和fuse(文件系统内核模块支持):
sudo yum install -y fuse-overlayfs fuse
需准备三个目录:
lowerdir:底层只读目录(存放基础数据,如镜像层);upperdir:上层可写目录(存放修改后的数据);workdir:工作目录(Overlay文件系统内部使用,必须为空目录)。sudo mkdir -p /mnt/overlay/{lower,upper,work}
使用mount命令将三层目录合并到目标挂载点(如/mnt/overlay/merged):
sudo mount -t overlay overlay \
-o lowerdir=/mnt/overlay/lower,upperdir=/mnt/overlay/upper,workdir=/mnt/overlay/work \
/mnt/overlay/merged
参数说明:
lowerdir:多个目录用冒号分隔(如dir1:dir2),读取时按顺序查找;upperdir:必须为单独目录,写入的数据会保存至此;workdir:不能与其他目录重叠,用于文件系统内部元数据操作。通过df -h命令检查挂载状态,确认文件系统类型为overlay且挂载点正确:
df -h /mnt/overlay/merged
若需系统重启后自动挂载,将配置添加到/etc/fstab文件:
sudo vi /etc/fstab
添加以下内容(与挂载命令参数一致):
overlay /mnt/overlay/merged overlay defaults,lowerdir=/mnt/overlay/lower,upperdir=/mnt/overlay/upper,workdir=/mnt/overlay/work 0 0
重启系统后,使用df -h验证自动挂载是否成功。
/mnt/overlay/merged的写操作会保存到upperdir,读操作优先从upperdir查找,未找到则从lowerdir读取;umount命令卸载:sudo umount /mnt/overlay/merged
Overlay网络通过VXLAN隧道技术,让不同Docker主机上的容器处于同一虚拟网络,实现跨主机通信,是Docker Swarm或Kubernetes集群的核心网络模式。
若未安装Docker,使用以下命令安装:
sudo yum install -y docker
sudo systemctl start docker
sudo systemctl enable docker
编辑/etc/docker/daemon.json文件,设置storage-driver为overlay2(推荐)并配置exec-opts:
sudo vi /etc/docker/daemon.json
添加以下内容:
{
"storage-driver": "overlay2",
"exec-opts": ["native.cgroupdriver=systemd"]
}
说明:
storage-driver: overlay2:使用Overlay2作为镜像存储驱动(性能更优);native.cgroupdriver=systemd:兼容systemd资源管理。保存后重启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
参数说明:
--driver overlay:指定网络驱动为Overlay;--subnet:定义Overlay网络的子网范围(需避免与其他网络冲突);--gateway:定义Overlay网络的网关地址(容器默认路由)。docker-compose.yml中指定网络为external: true(需提前创建网络):version: '3.8'
services:
web:
image: nginx
networks:
- my-overlay-network
networks:
my-overlay-network:
external: true
启动服务:
docker-compose up -d
docker run -d --name my_container --network my-overlay-network nginx
docker network ls
docker exec -it my_container ping <另一台主机容器IP>
若需跨主机通信,需确保所有主机:
cluster-store、cluster-advertise,用于服务发现);docker swarm init和docker swarm join命令);sudo firewall-cmd --add-port=4789/udp --permanent
sudo firewall-cmd --reload
以上步骤覆盖了CentOS中Overlay配置的核心场景,可根据实际需求选择对应配置。