中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

docker容器如何實現跨主機通信

發布時間:2020-06-11 20:18:32 來源:億速云 閱讀:398 作者:元一 欄目:云計算

什么是docker

docker是一個開源的應用容器引擎,開發者可以打包自己的應用到容器里面,然后遷移到其他機器的docker應用中,可以實現快速部署。如果出現的故障,可以通過鏡像,快速恢復服務。

docker安裝

環境準備

操作系統:CentOS 7.6.1810

軟件源:阿里云鏡像(在阿里云鏡像站上面可以找到docker-ce的軟件源,使用國內的源速度比較快)

安裝docker-ce

如果沒有物理機,可以先使用虛擬機進行學習。操作系統安裝,跳過(網上教程很多)。

1、安裝依賴

docker依賴于系統的一些必要的工具,可以提前安裝。

yum install -y yum-utils device-mapper-persistent-data lvm2

2、添加軟件源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3、安裝docker-ce

yum clean all yum makecache fastyum -y install docker-ce

4、啟動服務

通過systemctl啟動服務

systemctl start docker

5、查看安裝版本

這樣子就安裝成功了,啟動服務以后可以使用docker version查看一下當前的版本。

一、準備工作
跨主機需要兩個獨立的網卡:
server1和server2添加網卡

docker容器如何實現跨主機通信
docker容器如何實現跨主機通信
docker容器如何實現跨主機通信

[root@localhost ~]# ip addr show   查看網卡是否添加成功

docker容器如何實現跨主機通信
添加成功。

macvlan本身是linxu kernel的模塊,本質上是一種網卡虛擬化技術。其功能是允許在同一個物理網卡上虛擬出多個網卡,通過不同的MAC地址在數據鏈路層進行網絡數據的轉發,一塊網卡上配置多個 MAC 地址(即多個 interface),每個interface可以配置自己的IP,Docker的macvlan網絡實際上就是使用了Linux提供的macvlan驅 動。因為多個MAC地址的網絡數據包都是從同一塊網卡上傳輸,所以需要打開網卡的混雜模式ip link set eth2 promisc on。

打開server1和server2的ens37網卡的混雜模式,在server1和server2上運行以下命令:
[root@localhost ~]# ip link set ens37 promisc  on
[root@localhost ~]# ip addr show ens37              #查看promiscm功能是否打開

docker容器如何實現跨主機通信
docker容器如何實現跨主機通信
注意:如果不開啟混雜模式,會導致macvlan網絡無法訪問外界
具體在不使用vlan時,表現為無法ping通路由,無法ping通同一網絡內其他主機
在兩臺主機上各創建macvlan網絡
創建macvlan網絡不同于橋接模式,需要指定網段和網關(因為要保證跨主機上網段和網關是相同的),并且都得是真實存在的
[root@localhost ~]# docker network create -d macvlan --subnet 172.16.36.0/24 --gateway 172.16.36.254 -o parent=ens37 macvlan       #創建名為macvlan的網絡
[root@localhost ~]# docker network ls        #查看本地網絡信息

docker容器如何實現跨主機通信

創建docker容器
server1:
[root@localhost ~]# docker run -it --name vm01 --network=macvlan --ip=172.16.36.101 centos
[root@1f89fd5f37ff /]# ip addr

docker容器如何實現跨主機通信

[root@1f89fd5f37ff /]# ping 172.16.36.100

docker容器如何實現跨主機通信
server2:
[root@localhost ~]# docker run -it --name vm02 --network=macvlan --ip=172.16.36.100 centos
[root@e8da7e4ef2b3 /]# ip addr

docker容器如何實現跨主機通信

[root@e8da7e4ef2b3 /]# ping 172.16.36.101

docker容器如何實現跨主機通信

跨主機通信就這樣配置完了。

DNS設置

跨主機通信設置成功后,容器可能需要上網進行資料下載。所以現在進行DNS設置,配置如下:
修改daemon.json文件,文件所在路徑為/etc/docker/下,文件添加以下內容:
"dns" :[
"172.16.1.1",
"202.96.128.166"
]
docker容器如何實現跨主機通信
注:安裝軟件為docker的直接修改daemon.json文件,安裝軟件為docker-ce的需要創建daemon.json文件。

測試:
docker容器如何實現跨主機通信

補充:

在使用過程中,發現重啟宿主主機后,macvlan模式會自動關閉,導致使用該功能的容器之間無法通信。
docker容器如何實現跨主機通信
docker容器如何實現跨主機通信
未發現PROMISC狀態是 UP,
需要手動開啟promisc功能,才能恢復通信。
[root@localhost ~]# ip link set ens37 promisc on                 #開啟promisc功能
[root@localhost ~]# ip addr show ens37                 #查看網卡ens37的網卡信息
[root@localhost ~]# docker exec -it vm02 /bin/bash          #登錄容器
[root@8cb8828007cf /]# ping 172.16.36.100          #連通性測試
docker容器如何實現跨主機通信

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

舟曲县| 绥芬河市| 西华县| 兴山县| 恩施市| 桑植县| 阿拉善左旗| 大港区| 德钦县| 胶州市| 渭源县| 普陀区| 资中县| 威宁| 华容县| 徐闻县| 临沧市| 华坪县| 古浪县| 武清区| 祁连县| 特克斯县| 探索| 临洮县| 南宁市| 浦江县| 呼伦贝尔市| 嫩江县| 内丘县| 龙陵县| 华安县| 乌审旗| 贵州省| 安溪县| 饶平县| 正定县| 武汉市| 鄂温| 庆元县| 天全县| 赤城县|