如何实现跨主机之间docker容器通信问题(方法一)


这里采用最原始的桥接模式来实现跨主机直接docker容器通信问题

 如果只是简单创建一个bridge模式的网络是无法给容器指定ip的

一些常用命令

    brctl show br0
    brctl addbr br0
    brctl addif br0 eth0
    ifconfig br0 down

 1.先安装brctl工具包

apt-get install bridge-utils

2.创建一个docker的桥接网络类型(ip填写和同主机网段的ip)

docker network create --subnet=192.168.17.100/16 br0

这里我的宿主机ip为192.168.17.9 网关为192.168.17.254 docker的ip需要同网段即为 192.168.17.*

3.利用网桥工具将docker的网桥挂载到宿主机网卡上

brctl addif br0 eth0
brctl addif br0(docker网桥) eth0(宿主机网卡)

4.设置docker网卡ip

ifconfig br0 192.168.17.100 up

5.启动容器 需提前指定好ip

sudo docker run -it  -h test --privileged=True --net=staticnet --ip 192.168.17.101 --name="docker1" -p 1111:80 -p 1112:8080 ambari:v1.0 /bin/bash

6.对另外一台机器执行上述操作,注意ip别冲突

7.在docker里ping跨主机的另一个docker,如果ping的通

ERROR: Pool overlaps with other one on this address space

在docker中创建networks的时候有时候会报ERROR: Pool overlaps with other one on this address space的错误,这是因为目标网段已经存在的原因,通常这发生在将要创建的networks手动指定了subnet网段地址的时候。

这时有两个选择,一是查看已存在的网段是否有容器正在使用,如果没再用了可以删除该网段对应的网卡,二是修改目标的subnet网段地址。

 

问题解决!!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM