第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

Docker主機(jī)之間容器通信

之前的章節(jié)中,所有有關(guān)數(shù)據(jù)通信的部分,都是在單一宿主機(jī)上,如果不同的容器部署在不同的宿主機(jī),他們之間該如何通信呢?

本節(jié)中,我們介紹以下幾種方式:

  • 橋接網(wǎng)絡(luò);

  • 端口映射;

  • Docker網(wǎng)絡(luò)驅(qū)動(dòng): 1. Overlay,2. Macvlan。

Tips:還有一些第三方的解決方案,如 Weave,OpenvSwitch 等,有興趣可以自行查看相關(guān)文檔。

1. 橋接網(wǎng)絡(luò)模式與端口映射模式

Tips:橋接宿主機(jī)網(wǎng)絡(luò)與 端口映射模式的設(shè)定參考 Docker 網(wǎng)絡(luò) 部分內(nèi)容。

橋接模式,多個(gè)宿主機(jī)位于同一個(gè)局域網(wǎng),將每一個(gè)宿主機(jī)上的容器網(wǎng)絡(luò)橋接到宿主機(jī)網(wǎng)絡(luò)中,容器和宿主機(jī)同在一個(gè)局域網(wǎng)中互相通信。每臺(tái)宿主機(jī)上的容器都直接從局域網(wǎng)中獲取IP地址,容易導(dǎo)致IP地址沖突。

端口映射模式,是將容器的服務(wù)所運(yùn)行的端口映射到宿主機(jī)的某一個(gè)端口,然后其他的容器通過(guò)宿主機(jī)的對(duì)應(yīng)端口進(jìn)行訪問(wèn)。只要宿主機(jī)間能互相通信,容器之間就能通過(guò)宿主機(jī)的指定端口進(jìn)行通信。但是這種方式需要對(duì)每一個(gè)容器都映射端口,而且宿主機(jī)的端口也有限。

2. Docker 網(wǎng)絡(luò)驅(qū)動(dòng)

2.1 Overlay 網(wǎng)絡(luò)

Overlay網(wǎng)絡(luò)依賴(lài)額外的服務(wù)和配置,配置較為復(fù)雜,我們?cè)诤罄m(xù)容器云平臺(tái)一節(jié)會(huì)再次提到它的應(yīng)用。

2.2 Macvlan 網(wǎng)絡(luò)

macvlan 是 Linux 的內(nèi)核模塊,是一種網(wǎng)卡虛擬化技術(shù),功能是允許在同一個(gè)物理網(wǎng)卡上虛擬出多個(gè)網(wǎng)卡,通過(guò)不同的MAC地址在數(shù)據(jù)鏈路層進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)的轉(zhuǎn)發(fā),一塊網(wǎng)卡上配置多個(gè) MAC 地址,每個(gè)interface 可以配置自己的 IP。

Docker 的 macvlan 網(wǎng)絡(luò)使用了 macvlan 驅(qū)動(dòng)。 在物理網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)上看,每張?zhí)摂M網(wǎng)卡都是一個(gè)單獨(dú)的網(wǎng)口。

我們需要兩臺(tái)裝好 Docker 服務(wù)的 Linux 虛擬機(jī),并且虛擬機(jī)的網(wǎng)絡(luò)要互通。

  1. 創(chuàng)建 macvlan 網(wǎng)絡(luò),在兩個(gè)節(jié)點(diǎn)上都進(jìn)行此操作:
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth1 -o macvlan_mode=bridge macvlan_net 
  • macvlan 是 kernel 的模塊名;
  • 192.168.2.0/24是宿主機(jī)所在網(wǎng)絡(luò)的網(wǎng)段;
  • 192.168.2.1是網(wǎng)關(guān);
  • eth1 是 Docker 宿主機(jī)(兩臺(tái)虛擬機(jī))接入192.168.1.0/24 的物理網(wǎng)口。
  1. 創(chuàng)建容器并指定 IP:

容器b1:

docker run -it -d --net macvlan_net --ip=192.168.1.101 --name b1 busybox

容器b2:

docker run -it -d --net macvlan_net --ip=192.168.1.102 --name b2 busybox
  1. 測(cè)試容器通信

容器b1:

docker exec -it b1 ping 192.168.1.102

容器b2:

docker exec -it b2 ping 192.168.1.101

3. 小結(jié)

Docker 的容器跨主機(jī)通信功能是比較薄弱的,如果有需要,將上面的方案大致了解一下即可。在實(shí)際生產(chǎn)中,跨宿主機(jī)節(jié)點(diǎn)的 Docker 容器通信都依托在容器編排平臺(tái)(如 k8s)網(wǎng)絡(luò)配置,大家學(xué)完 Docker 之后一定有機(jī)會(huì)去深入了解的。