Ubuntu 上的 Overlay 网络配置指南
一、常见场景与前置条件
二、方案一 Docker Swarm 内置 Overlay(推荐)
docker swarm init --advertise-addr <管理节点IP>docker network create -d overlay my_overlaydocker network create -d overlay --subnet 10.22.1.0/24 --gateway 10.22.1.1 my_overlaydocker service create --name web --network my_overlay nginxdocker run -d --name app1 --network my_overlay ubuntu:24.04 sleep infinitydocker network ls、docker network inspect my_overlaydocker exec -it app1 ping <另一容器IP>;Swarm 服务可通过内部 DNS 用服务名访问。三、方案二 外部 KV 模式(Consul 示例)
docker run -d --name consul -p 8500:8500 -p 8300-8302:8300-8302 -p 8600:8600/udp progrium/consul -server -bootstrap/etc/docker/daemon.json(两台主机都配,注意接口/IP 与端口)
{ "cluster-store": "consul://<Consul_IP>:8500", "cluster-advertise": "<本机IP或接口名>:2375" }sudo systemctl daemon-reload && sudo systemctl restart dockerdocker network create -d overlay --subnet 10.22.1.0/24 my_overlaydocker run -d --name c1 --network my_overlay ubuntu:24.04 sleep infinitydocker exec -it c1 ping <另一主机容器IP>。四、多 Overlay 网络与服务编排
docker network create --driver overlay --subnet 10.0.9.0/24 my_overlay_1docker network create --driver overlay --subnet 10.0.10.0/24 my_overlay_2docker run -d --name web1 --network my_overlay_1 nginxdocker run -d --name web2 --network my_overlay_2 nginxdocker stack deploy -c docker-compose.yml <stack>五、故障排查与最佳实践
ping <对端IP>;端口连通:nc -vz <IP> <端口>(如 8500/8301/2375)。systemctl status docker;集群/节点:docker node ls(Swarm)。docker network ls、docker network inspect <net>、docker ps -a。/etc/hosts 或 DNS 正确。cluster-store、cluster-advertise 与防火墙策略。