docker跨主機容器訪問(網橋實現)

2021-09-30 13:50:06 字數 1893 閱讀 7240

本篇文章主要講述利用網橋方式實現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...