docker desktop中的容器与宿主机的局域网络通信?
发布网友
发布时间:2022-04-24 06:14
我来回答
共1个回答
热心网友
时间:2022-07-11 10:43
两台docker容器做datanode,当时配置Docker网络时,使用了Bridge模式,docker0网段(172.0.1.x),宿主机网段(192.1.1.x),使用外部客户端请求下载HDFS文件,去指定的datanode上拉去数据时,外部客户端无法连接到内部的docker容器,抛出的等待超时异常,并重试下载,更换请求的下载地址为可连接的宿主机datanode后, 才成功下载数据。
于是,想要对docker的网络配置进行修改,将docker容器的IP地址设置成与宿主机同网段,并且相互连通。
这里先要来说一下docker网络的四种方式:
1.Host模式:
Host 模式并没有为容器创建一个隔离的网络环境。
该模式下的Docker 容器会和Host宿主机共享同一个网络namespace, Docker Container可以和宿主机一样,使用宿主机的eth0,实现和外界的通信。
Host模式特点包括:
容器没有隔离的 network namespace
容器的 IP 地址同 Docker host 的 IP 地址
注意:容器中服务端口号不能与Host宿主机上已经使用的端口号相冲突
host 模式能够和其它模式共存
2.Container模式
Container网络模式是 Docker 中一种较为特别的网络的模式。处于这个模式下的 Docker 容器会共享其他容器的网络环境,因此,至少这两个容器之间不存在网络隔离,而这两个容器又与宿主机以及除此之外其他的容器存在网络隔离。
3.None模式
None 网络就是什么都没有的网络。挂在这个网络下的容器除了 lo,没有其他任何网卡。需要我们自行去配置。