本篇文章主要講述利用網橋方式實現docker跨主機容器訪問,參考文章:docker網路基礎---docker跨主機容器訪問通訊 (
在同一宿主機下的docker的容器之間是預設互相聯通的。在容器內通過ifconfig可以檢視到ip位址。在不同的容器中來執行ping是可以ping通的。
但我們通過觀察發現,每乙個啟動容器的ip位址不是固定的,所以如果我們通過ip位址來實現互連明顯是不靠譜的。但我們發現這些ip又處於同一網段中而且預設是172.17.0.x,這就是docker容器預設跨主機之間的鏈結方法的第一種:網橋實現
在docker宿主機上執行ifconfig命令可以看的存在乙個docker0的網橋。docker容器通過docker0 網橋實現同一主機間中,容器的ip位址分配和訪問,所以,如果希望docker跨主機訪問,最簡單的方式就是將不同主機的docker0 設定為同一網段。
整個網路的拓撲結構圖:
下面,我們就來實現這個結構:(在兩台主機上操作相同,所以這裡只展示一台的操作)
兩台ubuntu 的 ip:
host1 : 192.168.1.209 網絡卡:eth0
host2 :192.168.1.165 網絡卡: eth0
閘道器:192.168.1.1
具體操作:
我們不使用預設的網橋docker0,而是自己建立乙個網橋:
sudo apt-get install bridge-utils
分別在docker主機上建立虛擬網橋:
sudo brctl addbr br0
為網橋分配乙個同網段ip
host1: su
doif
conf
igbr
0192.168.1.1ne
tmas
k255.255.255.0ho
st2:
sudo ifconfig br0 192.168.1.1 netmask 255.255.255.0
橋接本地網絡卡:
host1: $ sudo brctl addif br0 eth0
這裡,我們就準備好了網橋設定
下面我們來修改docker的配置,使用我們新建的網橋代替docker0:
修改 /etc/default/docker檔案 su
dovi
m/et
c/de
faul
t/do
cker
新增守護
程序的啟
動選項:
host
1:do
cker
opts
=」−b
=br0
「hos
t2:d
ocke
ropt
s=」−
b=br
0「這裡
,−b用
來指定容
器連線的
網橋名字
儲存檔案
並重啟d
ocke
r服務 sudo service docker restart
這時在主機上輸入ifconfig會發現多了乙個br0,net addr:192.168.1.1
啟動docker容器,輸入ifconfig,eth0位址為192.168.1.2
使用ping主機發現ping不同,然後檢視路由表:route
發現eth0和br0的目的地一致,而且eth0在前,會導致容器找到eth0,所以無法ping通
解決方法:sudo route del -net 192.168.1.0/24 eth0
然後重新ping主機成功,ping另一台主機的容器也成功!
docker 使用網橋實現跨主機容器鏈結
基本思想 由於docker容器通過docker0 網橋實現同一主機間中,容器的ip位址分配和訪問,所以,如果希望docker跨主機訪問,最簡單的方式就是將不同主機的docker0 設定為同一網段。那麼怎麼實現跨主機呢?我這裡將本機網絡卡也通過網橋來連線,那麼,整體網路拓撲結構就是這樣 但是通過這種橋...
DOCKER中使用網橋實現跨主機容器連線
一 安裝網橋管理工具 yum y install bridge utils二 修改docker0的位址,並重啟docker服務 修改docker位址 ifconfig docker0 192.169.200.1 netmask 255.255.255.0 重啟docker systemctl res...
docker通過網橋跨主機連線
使用網橋實現跨主機容器連線 在同乙個 docker 的主機中 docker 容器使用預設的 docker0 網橋來進行網路的通訊,如果將連線容器的網橋也橋接到 docker 主機的網絡卡上,並且將網橋分配的 ip位址與 docker 主機分配的 ip位址設定為同一 ip段,就相當於將容器與 dock...