基本思想:
由於docker容器通過docker0 網橋實現同一主機間中,容器的ip位址分配和訪問,所以,如果希望docker跨主機訪問,最簡單的方式就是將不同主機的docker0 設定為同一網段。
那麼怎麼實現跨主機呢?我這裡將本機網絡卡也通過網橋來連線,那麼,整體網路拓撲結構就是這樣:
但是通過這種橋接,所有網絡卡都要在乙個網段下,所以要對每個docker守護程序對ip的分配做出限制
下面,我們就來實現這個結構:
操作:我用的是兩台centos7.1的伺服器
host1:10.20.23.144 eth0
host2:10.20.23.213 eth0
具體操作如下:
以下,以host1 為例,host2 上操作相似,只是網絡卡名字不一樣,我在這裡,沒有使用預設的docker0 網橋,而是新建了虛擬網橋.
brctl addbr br1
為網橋分配乙個同網段ip
host1
ifconfig br1 192.168.2.1 netmask 255.255.255.0
host2
ifconfig br1 192.168.2.2 netmask 255.255.255.0
host1,host2都要操作:
橋接本地網絡卡:
brctl addif br1 eth0
這裡,我們就準備好了網橋設定
下面我們來修改docker的配置,使用我們新建的網橋代替docker0:
修改 /etc/sysconfig/docker檔案
host1
cat /etc/sysconfig/docker
docker_opts="--registry-mirror= -b=br1 --fixed-cidr='192.168.2.64/26' "
host2
docker_opts="--registry-mirror= -b=br1 --fixed-cidr='192.168.2.128/26' "
這裡,-b 用來指定容器連線的網橋名字
--fixed-cidr用來限定為容器分配的ip位址範圍
儲存檔案並重啟docker服務
systemctl restart docker
下面,就可以來驗證:
分別在兩個host上啟動乙個容器
docker run -it dockersdd/cct1
在容器中執行ping命令檢視連線情況
[root@5dc021f7ecf8 /]# ping 172.17.0.6
ping 172.17.0.6 (172.17.0.6) 56(84) bytes of data.
64 bytes from 172.17.0.6: icmp_seq=1 ttl=64 time=0.047 ms
docker跨主機容器訪問(網橋實現)
本篇文章主要講述利用網橋方式實現docker跨主機容器訪問,參考文章 docker網路基礎 docker跨主機容器訪問通訊 在同一宿主機下的docker的容器之間是預設互相聯通的。在容器內通過ifconfig可以檢視到ip位址。在不同的容器中來執行ping是可以ping通的。但我們通過觀察發現,每乙...
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...