编辑:请注意,我指的是单主机设置、一些本地服务器架构,而不是一些企业级后端:D
docker network create
使用桥接驱动程序在主机上创建实际的桥接设备。我将主机 NIC 添加到桥接中eth0
(以实现类似于虚拟机桥接模式的功能)。
与任何网桥一样,当发生这种情况时,主机eth0
配置不再适用,而是应用docker创建的网桥接口。虽然我可以通过docker为网桥设置IP地址和子网,但我无法配置其他设置,例如路由或其他特定于接口的设置。
此外,在 docker 通过 SSH 远程发出命令时对网桥进行初始配置时,如果 docker-bridge 的 ip 地址与eth0
SSH 连接位于同一子网,则与主机的任何通信都会停止工作永久,这是由于eth0
和 docker之间存在子网冲突br-xxxxx
,而eth0
是网桥的成员。
问题:
- 在非 docker 情况下,创建网桥并向其添加主机的“管理”接口的最佳做法是什么
eth0
? - 这种子网冲突和路由解除问题会发生在任何 linux-bridge 上,因为底层接口配置被忽略了。 - 如何
docker network create
永久配置由创建的接口。我可以使用标准 Linux 文件来配置网络,但每当我重新创建设置时,br- 的命名都会有所不同,这听起来不像是一种合理的方法 - 最后,我认为对我的情况来说最好的解决方案是如果有一个脚本、工具或守护进程,可以将现有
eth0
配置复制到新的网桥上,这是可管理的。
谢谢。
P.S1. 我PERMANENTLY
上面说过,由于 docker bridges 在启动时仍然存在,如果配置了静态 ip dhcpcd
,那么在启动时会有 2 个接口具有相同的子网,因此与主机的通信存在问题(相对于eth0
在将其添加到网桥之前正常工作的)
P.S2. 请不要问我为什么要加入主机和虚拟主机,这是一个非常奇怪和方便的用例
答案1
- 视情况而定,如果每个节点都是物理机器,那么您需要一个物理路由器。您还可以为每台机器定义多个节点,例如:
(Network with 192.168.1.0/24 subnet)
- Machine #1
- Node 1: 192.168.1.1
- Node 2: 192.168.1.2
- Machine #2
- Node 3: 192.168.1.3
- Node 4: 192.168.1.4
每台机器都配置了一个网桥。但如何将这些 IP 地址暴露给本地网络?这里是线索。
使用docker-compose.yml解决方案。然后使用
docker-compose up
命令启动配置并docker-compose down
停止它。再次使用docker-compose.yml。 这里是详细文档用于通过 docker compose 配置网络。
如果我遗漏了什么,请告诉我。希望这对你有帮助,祝你好运!