这里采用最原始的桥接模式来实现跨主机直接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网段地址。
问题解决!!