从第一性原理讲透:为什么你的 Docker Service 因“vxlan interface: file exists”而失败?
在云原生和容器化的世界里,Docker Swarm 为我们提供了一种简单而强大的方式来编排和管理容器集群。然而,在这种便利的背后,是一套复杂而精密的网络模型。当我们兴致勃勃地执行 docker service create
或 docker stack deploy
时,有时会迎面撞上一个令人困惑的错误,就像你遇到的那样:
network sandbox join failed: subnet sandbox join failed for "10.0.3.0/24": error creating vxlan interface: file exists
重启 Docker (systemctl restart docker)
似乎无济于事,但通过 docker stack rm
和 docker network prune
组合拳却能奇迹般地解决。这背后到底发生了什么?
要回答这个问题,我们不能只停留在“怎么解决”的层面,而必须深入底层,从第一性原理(First Principles)出发,理解 Docker Swarm 的网络是如何工作的。