Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

关于docker自定义网络的自动映射为br0问题

Featured Replies

各位大佬,请教一个想不明白的问题。

unraid使用了旁路由的方式接入了家庭主网段192.168.31.0/24

我已经新建了一个名为net_dockershare的新子网,并且配置了相应的ip段

root@TaoR-unraid:~# docker inspect net_dockershare
[
    {
        "Name": "net_dockershare",
        "Id": "8d4e2a3b868f1bd2fa1ace0196506482d5da31c3b9d0e3e72b928a53d8c5d652",
        "Created": "2023-10-15T10:23:02.28393405+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": true,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "192.168.32.0/24",
                    "Gateway": "192.168.32.1"
                },
                {
                    "Subnet": "fc00:1234:32::/64",
                    "Gateway": "fc00:1234:32::1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "7f7c1641aaa2f91648f547b6cbe451e6cb938f0a66fc5764d7e0eda5d7a069d4": {
                "Name": "lookingglass",
                "EndpointID": "773a478ed8cc2fdec6da54510bfe434cfaaa59eec06330ecf7e1cc2542c4f240",
                "MacAddress": "02:42:c0:a8:20:0d",
                "IPv4Address": "192.168.32.13/24",
                "IPv6Address": "fc00:1234:32::4/64"
            },
            "9f828ab967b9e014a10aa77c848babaf93d6faf65f1bb4ffd9f5427c555771f0": {
                "Name": "Nacho-Rclone-Native-GUI",
                "EndpointID": "75be973713ed668c996514944fb11f4f99e9d5126edc824f3456251399a6d1ba",
                "MacAddress": "02:42:c0:a8:20:0b",
                "IPv4Address": "192.168.32.11/24",
                "IPv6Address": "fc00:1234:32::3/64"
            },
            "e70be4e27aaf57bb79b7ec5b2cd8a1bf7a1a095512f042cb518aaee8635d4c06": {
                "Name": "speedtest-test",
                "EndpointID": "c1bddf7dd4743bb9724bffdb602bed04a632f61b13b6b3d96c2b6f493ddc7114",
                "MacAddress": "02:42:c0:a8:20:0c",
                "IPv4Address": "192.168.32.12/24",
                "IPv6Address": "fc00:1234:32::2/64"
            }
        },
        "Options": {},
        "Labels": {}
    }

如图,新建了三个容器,也均采用了该自定义网络的网段

例如窥镜的cli:

docker run -d --rm \
--name lookingglass \
-e HTTP_PORT=8100 \
-p 8101:8100 \
--net=net_dockershare \
--ip 192.168.32.13 \
wikihostinc/looking-glass-server

但为什么,构建容器后,unraid会自动将地址映射到br0

如图

652ba402cdafd.png

现在就只能通过192.168.31:8101来访问,不能通过192.168.32.13:8100访问

 

PS:docker设置如下

652ba4a66ecf0.png

 

大佬们救救啊!!!!

Solved by JackieWu

  • Solution
On 10/15/2023 at 4:39 PM, TaoR said:

现在就只能通过192.168.31:8101来访问,不能通过192.168.32.13:8100访问

 

如果你希望使用的另外的网段(192.168.32.X)去访问 docker 容器,那么按理说你应该在 docker 设置那里将 ”接口上 IPv4 自定义网络 eth2“ 的子网设置为 192.168.32.0/24,这样你就可以给 docker 分配 192.168.32.X 的 IP 地址了,并且也可以使用这一地址去访问(前提是你的路由器支持多网段路由)。

 

另外你也需要注意以下几点:

  • 由于你需要给 docker 分配不同的 IP 网段,所以你在使用 docker network create XXX  创建 docker 自定义网络时应该使用 macvlan driver 进行创建,例如:docker network create --driver macvlan .... ,但是这种方式你直接在 docker 设置那里配置 ”接口上 IPv4 自定义网络 xx “ 就行了。
  •  如果你希望使用的是 bridge 的 docker driver 进行使用,那么这一模式下没办法将这个 docker 自定义网络依附到具体的某一个网口上,也就是说没办法指定使用这一自定义 docker 网络的 docker 容器的流量走固定的网卡。实际上论坛里已经有人这么实验过但是并不能成功(参考这个帖子 CUSTOM DOCKER NETWORK ON BR1),具体的原理可以参口 stackoverflow 的这个问答 How to make docker only use a eth1 interface to communicate with other hosts?
    Quote

    The bridge created by docker isn't attached to any physical interface. External access is mediated by layer 3 forwarding and NAT rules in your iptables nat table.

使用-p参数时,Docker会将宿主机的端口映射到容器的端口,所以能通过192.168.31:8101访问。这个地址是宿主机的地址和指定的映射端口。

要通过192.168.32.13:8100访问容器,应确保以下几点:

路由配置:确保设备能够路由到192.168.32.0/24网络。如果从不同的子网访问,可能需要在路由器上进行一些路由配置。

Docker容器的监听地址:确保容器内的应用程序监听在0.0.0.0而不是127.0.0.1,因为后者只能容器自身访问。

网络隔离:使用Docker bridge网络时,默认情况下容器之间是可以互相通信的,但与宿主机的通信可能会有所限制。可以考虑使用host网络模式或者macvlan,但这些模式都有它们的使用场景和限制。

关于br0,它是Unraid的一个网络接口,通常用于桥接多个物理网络接口。如果容器被自动映射到br0,尝试网络设置关闭桥接,Docker开启macvlan

  • 2 weeks later...
  • Author
On 10/16/2023 at 7:07 PM, JackieWu said:

 

如果你希望使用的另外的网段(192.168.32.X)去访问 docker 容器,那么按理说你应该在 docker 设置那里将 ”接口上 IPv4 自定义网络 eth2“ 的子网设置为 192.168.32.0/24,这样你就可以给 docker 分配 192.168.32.X 的 IP 地址了,并且也可以使用这一地址去访问(前提是你的路由器支持多网段路由)。

 

另外你也需要注意以下几点:

  • 由于你需要给 docker 分配不同的 IP 网段,所以你在使用 docker network create XXX  创建 docker 自定义网络时应该使用 macvlan driver 进行创建,例如:docker network create --driver macvlan .... ,但是这种方式你直接在 docker 设置那里配置 ”接口上 IPv4 自定义网络 xx “ 就行了。
  •  如果你希望使用的是 bridge 的 docker driver 进行使用,那么这一模式下没办法将这个 docker 自定义网络依附到具体的某一个网口上,也就是说没办法指定使用这一自定义 docker 网络的 docker 容器的流量走固定的网卡。实际上论坛里已经有人这么实验过但是并不能成功(参考这个帖子 CUSTOM DOCKER NETWORK ON BR1),具体的原理可以参口 stackoverflow 的这个问答 How to make docker only use a eth1 interface to communicate with other hosts?

 

On 10/19/2023 at 11:17 AM, anpple said:

使用-p参数时,Docker会将宿主机的端口映射到容器的端口,所以能通过192.168.31:8101访问。这个地址是宿主机的地址和指定的映射端口。

要通过192.168.32.13:8100访问容器,应确保以下几点:

路由配置:确保设备能够路由到192.168.32.0/24网络。如果从不同的子网访问,可能需要在路由器上进行一些路由配置。

Docker容器的监听地址:确保容器内的应用程序监听在0.0.0.0而不是127.0.0.1,因为后者只能容器自身访问。

网络隔离:使用Docker bridge网络时,默认情况下容器之间是可以互相通信的,但与宿主机的通信可能会有所限制。可以考虑使用host网络模式或者macvlan,但这些模式都有它们的使用场景和限制。

关于br0,它是Unraid的一个网络接口,通常用于桥接多个物理网络接口。如果容器被自动映射到br0,尝试网络设置关闭桥接,Docker开启macvlan

谢谢大佬们回复,我明白了,是我自己的路由器不支持多网段路由

所以不管怎么样,都会自动映射出去

谢谢~~~

  • Author
On 10/19/2023 at 11:17 AM, anpple said:

使用-p参数时,Docker会将宿主机的端口映射到容器的端口,所以能通过192.168.31:8101访问。这个地址是宿主机的地址和指定的映射端口。

要通过192.168.32.13:8100访问容器,应确保以下几点:

路由配置:确保设备能够路由到192.168.32.0/24网络。如果从不同的子网访问,可能需要在路由器上进行一些路由配置。

Docker容器的监听地址:确保容器内的应用程序监听在0.0.0.0而不是127.0.0.1,因为后者只能容器自身访问。

网络隔离:使用Docker bridge网络时,默认情况下容器之间是可以互相通信的,但与宿主机的通信可能会有所限制。可以考虑使用host网络模式或者macvlan,但这些模式都有它们的使用场景和限制。

关于br0,它是Unraid的一个网络接口,通常用于桥接多个物理网络接口。如果容器被自动映射到br0,尝试网络设置关闭桥接,Docker开启macvlan

另外,又用了您的优惠码从basic升级为pro了,哈哈哈,当初最早五折时应该直接买pro的,多花了十来刀嘿嘿

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.