這里采用最原始的橋接模式來實現跨主機直接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網段地址。
問題解決!!