主机端正确配置docker网桥的方法

主机端正确配置docker网桥的方法

编辑:请注意,我指的是单主机设置、一些本地服务器架构,而不是一些企业级后端:D


docker network create使用桥接驱动程序在主机上创建实际的桥接设备。我将主机 NIC 添加到桥接中eth0 (以实现类似于虚拟机桥接模式的功能)。

与任何网桥一样,当发生这种情况时,主机eth0配置不再适用,而是应用docker创建的网桥接口。虽然我可以通过docker为网桥设置IP地址和子网,但我无法配置其他设置,例如路由或其他特定于接口的设置。

此外,在 docker 通过 SSH 远程发出命令时对网桥进行初始配置时,如果 docker-bridge 的 ip 地址与eth0SSH 连接位于同一子网,则与主机的任何通信都会停止工作永久,这是由于eth0和 docker之间存在子网冲突br-xxxxx,而eth0是网桥的成员。

问题:

  1. 在非 docker 情况下,创建网桥并向其添加主机的“管理”接口的最佳做法是什么eth0? - 这种子网冲突和路由解除问题会发生在任何 linux-bridge 上,因为底层接口配置被忽略了。
  2. 如何docker network create永久配置由创建的接口。我可以使用标准 Linux 文件来配置网络,但每当我重新创建设置时,br- 的命名都会有所不同,这听起来不像是一种合理的方法
  3. 最后,我认为对我的情况来说最好的解决方案是如果有一个脚本、工具或守护进程,可以将现有eth0配置复制到新的网桥上,这是可管理的。

谢谢。

P.S1. 我PERMANENTLY上面说过,由于 docker bridges 在启动时仍然存在,如果配置了静态 ip dhcpcd,那么在启动时会有 2 个接口具有相同的子网,因此与主机的通信存在问题(相对于eth0在将其添加到网桥之前正常工作的)

P.S2. 请不要问我为什么要加入主机和虚拟主机,这是一个非常奇怪和方便的用例

答案1

  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 地址暴露给本地网络?这里是线索

  1. 使用docker-compose.yml解决方案。然后使用docker-compose up命令启动配置并docker-compose down停止它。

  2. 再次使用docker-compose.yml。 这里是详细文档用于通过 docker compose 配置网络。

如果我遗漏了什么,请告诉我。希望这对你有帮助,祝你好运!

相关内容