我目前正在设置一个 UnraidOS 服务器,并在我的机器上有一堆 docker 映像。我最近安装了一个 docker 容器,它根据 IP ping 其他容器并报告正常运行时间状态。正常运行时间 docker 连接到桥接网络,并且只能访问桥接上的其他 docker 容器,不能访问网络上的任何其他内容。为了让我的正常运行时间泊坞窗访问其他 IP,我需要做什么?
我的 unraidOS 服务器的静态 IP 为 192.168.1.14
Docker 1: 192.168.1.14:8401 (bridge)
Docker 2: 192.168.1.14:8402 (bridge)
Docker 3: 192.168.1.14:8403 (bridge)
Uptime Docker 4: 192.168.1.14:8400 (bridge)
Docker 5: 192.168.1.15 (custom: br0)
Docker 6: 192.168.1.16 (custom: br0)
我的“Uptime Docker 4”能够 ping 并连接到 Docker 1、Docker 2 和 Docker 3,因为它们都在“桥接”网络时间上。Docker 5 和 Docker 6 都在“custom:br0”网络上,因此它们有自己的 IP 地址,而我的“Uptime Docker 4”无法连接到它,因为它位于不同的网络上。
我的解决方案是什么,以便 Docker 5 和 Docker 6 仍然保留其 IP,但 Uptime Docker 4 仍然可以访问?
我有另一台 PC 以 192.168.1.103 的 IP 连接到我的网络,并且“Uptime Docker 4”能够对其进行 ping 操作。即使像我的 PC 一样分配了这些 IP,它仍然无法 ping 通“Docker 5”和“Docker 6”。
更新:专门针对 UnraidOS 用户,设置 > Docker 下有一个选项,称为“主机访问自定义网络”。如果你打开它,你就可以访问连接到 br0 的主机。我将所有容器移至 br0 并为我的组织分配了自定义 IP。
注意:如果重新启动服务器,“对自定义网络的主机访问”失败(即使它显示它已打开),您需要停止 Docker,关闭“对自定义网络的主机访问”启动 docker,再次停止 docker,启用“主机访问自定义网络”,然后再次启动它以正确激活更改。
默认网桥只连接到默认网桥上的其他容器,这可以隔离容器并允许轻松设置而不会损害其他“生产”容器,这是设计使然。UnRaid 也只公开了一些容器的设置选项,你可能需要使用终端来解决。
基本上,您的“桥接”容器都在 /16 子网上,这就是它们无法 ping 其他 IP 的原因。我建议您阅读以尽可能熟悉自己;https://docs.docker.com/network/network-tutorial-standalone/
运行
docker network inspect bridge
以检查设置。要改变这一点,你有几个选择;
您可以确认/编辑默认桥接网络设置。概览底部的详细信息。如果您只想使用 ping,则不需要打开任何端口。根据您的本地网络更改网关/dns。https://docs.docker.com/network/bridge/#configure-the-default-bridge-network
您可以设置自己的 Docker 网络,具有更多可观的网络选项。这更详细一点,您必须能够编辑 docker 容器来执行此操作,特别是更改它们的“网络驱动程序”,我不确定UnRaid 是否可以通过 GUI 选择。https://docs.docker.com/network/network-tutorial-standalone/