最近在研究Docker,Docker的網(wǎng)絡(luò)配置是比較令人頭疼的部分,尤其是跨主機(jī)的容器間通信,很多解決方案都比較復(fù)雜,這里,我只用虛擬網(wǎng)橋來實(shí)現(xiàn)Docker的跨主機(jī)訪問,分享出來,希望對(duì)Docker學(xué)習(xí)的各位有一定的啟發(fā)。
?
基本思想:
由于Docker容器通過docker0 網(wǎng)橋?qū)崿F(xiàn)同一主機(jī)間中,容器的ip地址分配和訪問,所以,如果希望Docker跨主機(jī)訪問,最簡單的方式就是將不同主機(jī)的docker0 設(shè)置為同一網(wǎng)段。
那么怎么實(shí)現(xiàn)跨主機(jī)呢?我這里將本機(jī)網(wǎng)卡也通過網(wǎng)橋來連接,那么,整體網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)就是這樣:
但是通過這種橋接,所有網(wǎng)卡都要在一個(gè)網(wǎng)段下,所以要對(duì) 每個(gè)Docker守護(hù)進(jìn)程對(duì)ip的分配做出限制
下面,我們就來 實(shí)現(xiàn)這個(gè)結(jié)構(gòu) :
我的兩臺(tái)Ubuntu 14.04 的虛擬機(jī)ip:
Host1 : 10.211.55.3 ?網(wǎng)卡:eth0
Host2 :10.211.55.5 ? 網(wǎng)卡 ? eth1
網(wǎng)關(guān):10.211.55.1
對(duì)容器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 上操作相似,只是網(wǎng)卡名字不一樣,我在這里,沒有使用默認(rèn)的docker0 網(wǎng)橋,而是新建了虛擬網(wǎng)橋
1. 分別在Docker主機(jī)上建立虛擬網(wǎng)橋:
Host1: $ sudo brctl addbr br0
?
2. 為網(wǎng)橋分配一個(gè)同網(wǎng)段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. 橋接本地網(wǎng)卡:
Host1: $ sudo brctl addif br0 eth0
? ? ?
這里,我們就準(zhǔn)備好了網(wǎng)橋設(shè)置
下面我們來修改Docker的配置,使用我們新建的網(wǎng)橋代替docker0:
1. 修改 /etc/default/docker文件
$sudo vim /etc/default/docker
2. 添加守護(hù)進(jìn)程的啟動(dòng)選項(xiàng):
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 用來指定容器連接的網(wǎng)橋名字
--fixed-cidr用來限定為容器分配的IP地址范圍
?
3. 保存文件并重啟Docker服務(wù)
$ sudo service docker restart
?
下面,就可以來驗(yàn)證:
1.分別在兩個(gè)Host上啟動(dòng)一個(gè)容器
$ docker run -it ubuntu /bin/bash
?2.在容器中運(yùn)行ping命令查看連接情況 ?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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