问下docker容器如何跟宿主机的局域网进行通信的,获取能不能通过宿主机与其他电脑通信?
情况是这样的,我装了一个docker容器,用的net是bridge,然后宿主机有个网卡比如是10.12.23.5 ,现在我容器的ip是172.17.0.2
如何与10.12.23.6的电脑进行通信呢,docker容器需要配置什么?
然后宿主机能跟10.12.25.2电脑通信,不同网段的,那我这个容器内如何与这台电脑通信呢?
试试用 host 模式
你的容器的端口一般和你的宿主机会做一个端口映射,相当于访问宿主机的端口,docker 只提供服务,不提供对外访问能力
别指定host,走默认就行了
端口映射呗
docker 容器内与宿主机的内网互通,是这个意思吗?
应该是不能直接互通的,只能通过宿主机转发,容器的局域网IP是 172.17.0.2,那么网关是 172.17.0.1,也就是宿主机IP,以容器访问宿主机的内网中的这台机器 10.12.23.6 为例,在宿主机设置转发规则 9501端口 -> 10.12.23.6:80,在容器内与 172.17.0.1:9501 通信,即通过宿主机转发到 10.12.23.6
宿主机设置转发,可参考 博客:linux 利用防火墙(firewall)转发实现外网服务器通过中间服务器访问...
这个场景我没试过,理论上应该可以,你可以试下
桥接的话应该会给容器分配一个与宿主同网段的ip,然后既然是同网段了正常访问就行了
参考docker官方文档:
docs.docker.com/desktop/networking... docs.docker.com/engine/release-not...
新版的 Docker Desktop(基于WSL2引擎) 安装后会在 host 中插入
```192.168.100.112 host.docker.internal
192.168.100.112 gateway.docker.internal```
192.168.100.112 是 Windows 宿主机在局域网中的 IP 地址, 我们可以在容器内通过 host.docker.internal 访问宿主机,比如:
mysql -u root -h host.docker.internal -P 3306 -p 1234567
网关可以通过 gateway.docker.internal 访问。