CentOS Overlay如何进行网络配置
CentOS上配置Overlay网络(以Docker为例)
Overlay网络是Docker实现跨主机容器通信的核心网络模式,通过VXLAN/GRE隧道封装技术,让不同主机上的容器像在同一局域网内一样通信。以下是CentOS系统上的详细配置步骤:
一、前置准备
-
系统与内核要求
- CentOS版本需为7.x及以上(内核版本≥3.10,支持Overlay驱动);
- Docker版本需≥1.9(支持Overlay网络驱动)。
-
安装Docker
使用YUM仓库安装Docker CE(社区版):sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/ sudo yum install -y docker-ce docker-ce-cli containerd.io sudo systemctl start docker & & sudo systemctl enable docker # 启动并设置开机自启 -
配置Docker存储驱动(可选但推荐)
编辑/etc/docker/daemon.json,指定overlay2为存储驱动(Docker默认推荐):{ "storage-driver": "overlay2", "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m"} }重启Docker使配置生效:
sudo systemctl restart docker -
验证内核支持Overlay
加载Overlay内核模块:sudo modprobe overlay
二、创建Overlay网络
使用docker network create命令创建Overlay网络,需指定驱动类型、子网、网关等参数:
sudo docker network create \
--driver overlay \ # 指定Overlay驱动
--subnet=10.0.0.0/24 \ # Overlay网络子网(自定义,需避免与其他网络冲突)
--gateway=10.0.0.1 \ # Overlay网络网关(自定义)
my-overlay-network # 网络名称(自定义)
参数说明:
--driver overlay:必须参数,指定使用Overlay网络驱动;--subnet:定义Overlay网络的IP段(如10.0.0.0/24),用于容器IP分配;--gateway:Overlay网络的网关地址(如10.0.0.1),容器通过该网关访问外部网络。
三、连接容器到Overlay网络
有两种方式将容器连接到Overlay网络:
1. 启动容器时直接连接
使用--network参数指定Overlay网络:
sudo docker run -d --name container1 --network my-overlay-network nginx
sudo docker run -d --name container2 --network my-overlay-network nginx
上述命令会启动两个Nginx容器,并自动分配10.0.0.0/24网段内的IP地址。
2. 将已运行容器连接到Overlay网络
使用docker network connect命令:
sudo docker network connect my-overlay-network existing-container
其中existing-container是已运行的容器名称或ID。
四、验证Overlay网络连通性
-
查看Overlay网络列表
确认网络已创建:docker network ls输出应包含
my-overlay-network(驱动为overlay)。 -
查看网络详细信息
获取Overlay网络的子网、网关、容器连接状态:docker network inspect my-overlay-network输出中的
Containers字段会显示已连接的容器及其IP地址。 -
测试容器间通信
进入其中一个容器(如container1),ping另一个容器(如container2):sudo docker exec -it container1 ping $(docker inspect -f '{ { range .NetworkSettings.Networks} } { { .IPAddress} } { { end} } ' container2)若能收到回复,说明Overlay网络通信正常。
五、配置跨主机Overlay网络(可选但常用)
若需要在多台CentOS主机上实现容器通信,需额外配置Docker守护进程和密钥管理:
1. 配置Docker守护进程
编辑每台主机的/etc/docker/daemon.json,添加以下参数:
{
"cluster-store": "consul://<
consul-server-ip>
:8500", # 服务发现组件(如Consul)地址
"cluster-advertise": "<
当前主机IP>
:2376" # 当前主机的Docker API地址
}
说明:
cluster-store:用于存储集群状态的服务发现工具(如Consul、Etcd);cluster-advertise:当前主机的Docker API监听地址(需开放2376端口)。
重启Docker使配置生效:
sudo systemctl restart docker
2. 初始化Docker Swarm集群(可选)
若使用Swarm模式,可通过以下命令初始化集群(在管理节点执行):
sudo docker swarm init --advertise-addr <
管理节点IP>
加入工作节点(在每个工作节点执行,使用管理节点输出的命令):
sudo docker swarm join --token <
TOKEN>
<
管理节点IP>
:2377
Swarm模式下,Overlay网络会自动跨主机可用。
3. 测试跨主机通信
在主机A上启动容器并连接到Overlay网络:
sudo docker run -d --name containerA --network my-overlay-network nginx
在主机B上启动容器并连接到同一Overlay网络:
sudo docker run -d --name containerB --network my-overlay-network nginx
进入containerA,pingcontainerB的IP地址,验证跨主机通信。
六、注意事项
-
防火墙配置
Overlay网络依赖VXLAN隧道(UDP 4789端口),需确保防火墙允许该端口流量:sudo firewall-cmd --add-port=4789/udp --permanent sudo firewall-cmd --reload -
SELinux配置
若启用了SELinux,需设置为permissive模式或添加相应策略:sudo setenforce 0 # 临时关闭(测试用)或修改
/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=permissive。 -
性能优化
- 使用高性能网络设备(如万兆网卡);
- 避免在同一主机上运行过多Overlay网络(减少隧道开销);
- 调整MTU值(如设置为1450,避免VXLAN封装导致的分片)。
通过以上步骤,即可在CentOS系统上成功配置Overlay网络,实现跨主机的容器通信。根据实际需求,可选择手动配置或结合Kubernetes等编排工具实现更复杂的网络场景。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS Overlay如何进行网络配置
本文地址: https://pptw.com/jishu/743968.html
