首先说明一下我想要做的效果,是为了单个 docker 容器能够通过旁路由 192.168.1.254 进行联网。 根据宿主机设置网关为 192.168.1.254 类推为 docker 设置网关
使用这条命令创建自定义网络 docker network create --subnet 192.168.1.0/24 --gateway 192.168.1.254 mynet
但是创建之后,会导致浏览器访问旁路由 192.168.1.254 的时候,页面显示的不是旁路由,而是宿主机 192.168.1.47 的页面,也就是我没办法访问到旁路由页面了,使用 docker 运行容器并指定 mynet 网络的话,好像也没有网络,安装 curl 会一直卡在那里不动。
删除自定义网络 mynet 后,恢复正常
有没有大佬懂
创建自定义网络之前
创建之后
1
lcdtyph 2021-07-01 16:57:19 +08:00 via iPhone
…没有给拓扑,我猜是你外网(相对于 mynet )的网段也是 192.168.1.0/24
|
2
ScotGu 2021-07-01 17:05:15 +08:00
没有 macvlan ?
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.254 --ip-range=192.168.1.40/29 -o parent=ens192 bridge-HomeLan ens192 为网卡名称。 ip-range 是自动分配的地址池。 |
3
bobzhangyong 2021-07-01 17:31:28 +08:00
docker 默认的网络是一个私有网络, 使用 nat 和宿主机沟通, 你需要使用-p 参数把 docker 里面的端口映射到宿主机,通过宿主机 ip 和 docker 映射的端口访问。
我感觉你想要 docker 里面的网络和 宿主机在一个网段,并被宿主机外面的机器访问, 可以看看--network=host 参数,这个和宿主机共享网卡。 |
4
RexG OP @lcdtyph 大概是这样吧,没工具随便画了画
<a href="https://imgtu.com/i/R6DzRI"><img src="https://z3.ax1x.com/2021/07/02/R6DzRI.png" alt="R6DzRI.png" border="0" /></a> |
5
RexG OP @bobzhangyong 不是啊,就是 docker 单容器走旁路由,不妨碍其他容器,至于容器的 ip 不管
|
7
eluotao 2021-07-05 16:18:05 +08:00
借此问个问题:
用 docker 创建自定义网络 把 mysql 添加到自定义网络 连接很卡 有知道原因的吗? |