最近在研究Docker,Docker的網絡配置是比較令人頭疼的部分,尤其是跨主機的容器間通信,很多解決方案都比較復雜,這里,我只用虛擬網橋來實現Docker的跨主機訪問,分享出來,希望對Docker學習的各位有一定的啟發。
?
基本思想:
由于Docker容器通過docker0 網橋實現同一主機間中,容器的ip地址分配和訪問,所以,如果希望Docker跨主機訪問,最簡單的方式就是將不同主機的docker0 設置為同一網段。
那么怎么實現跨主機呢?我這里將本機網卡也通過網橋來連接,那么,整體網絡拓撲結構就是這樣:
但是通過這種橋接,所有網卡都要在一個網段下,所以要對 每個Docker守護進程對ip的分配做出限制
下面,我們就來 實現這個結構 :
我的兩臺Ubuntu 14.04 的虛擬機ip:
Host1 : 10.211.55.3 ?網卡:eth0
Host2 :10.211.55.5 ? 網卡 ? eth1
網關:10.211.55.1
對容器ip的劃分:
Host1: 10.211.55.64/26
地址范圍: 10.211.55.65~10.211.55.126
Host2: 10.211.55.128/26
地址范圍: 10.211.55.129~10.211.55.190
需要的操作:
以下,以Host1 為例,Host2 上操作相似,只是網卡名字不一樣,我在這里,沒有使用默認的docker0 網橋,而是新建了虛擬網橋
1. 分別在Docker主機上建立虛擬網橋:
Host1: $ sudo brctl addbr br0
?
2. 為網橋分配一個同網段ip
Host1: $ sudo ifconfig br0 10.211.55.10 netmask 255.255.255.0
Host2: $ sudo ifconfig br0 10.211.55.20 netmask 255.255.255.0
3. 橋接本地網卡:
Host1: $ sudo brctl addif br0 eth0
? ? ?
這里,我們就準備好了網橋設置
下面我們來修改Docker的配置,使用我們新建的網橋代替docker0:
1. 修改 /etc/default/docker文件
$sudo vim /etc/default/docker
2. 添加守護進程的啟動選項:
Host1: DOCKER_OPTS=" -b=br0 --fixed-cidr='10.211.55.64/26' "??
Host2: DOCKER_OPTS=" -b=br1 --fixed-cidr='10.211.55.128/26' "
? ? ? 這里,-b 用來指定容器連接的網橋名字
--fixed-cidr用來限定為容器分配的IP地址范圍
?
3. 保存文件并重啟Docker服務
$ sudo service docker restart
?
下面,就可以來驗證:
1.分別在兩個Host上啟動一個容器
$ docker run -it ubuntu /bin/bash
?2.在容器中運行ping命令查看連接情況 ?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
