October 15, 20232 yr 各位大佬,请教一个想不明白的问题。 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 如图 现在就只能通过192.168.31:8101来访问,不能通过192.168.32.13:8100访问 PS:docker设置如下 大佬们救救啊!!!!
October 16, 20232 yr 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.
October 19, 20232 yr 使用-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
October 29, 20232 yr 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 谢谢大佬们回复,我明白了,是我自己的路由器不支持多网段路由 所以不管怎么样,都会自动映射出去 谢谢~~~
October 29, 20232 yr 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.