您好,登錄后才能下訂單哦!
什么是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添加網卡
[root@localhost ~]# ip addr show 查看網卡是否添加成功
添加成功。
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功能是否打開
注意:如果不開啟混雜模式,會導致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容器
server1:
[root@localhost ~]# docker run -it --name vm01 --network=macvlan --ip=172.16.36.101 centos
[root@1f89fd5f37ff /]# ip addr
[root@1f89fd5f37ff /]# ping 172.16.36.100
server2:
[root@localhost ~]# docker run -it --name vm02 --network=macvlan --ip=172.16.36.100 centos
[root@e8da7e4ef2b3 /]# ip addr
[root@e8da7e4ef2b3 /]# ping 172.16.36.101
跨主機通信就這樣配置完了。
DNS設置
跨主機通信設置成功后,容器可能需要上網進行資料下載。所以現在進行DNS設置,配置如下:
修改daemon.json文件,文件所在路徑為/etc/docker/下,文件添加以下內容:
"dns" :[
"172.16.1.1",
"202.96.128.166"
]
注:安裝軟件為docker的直接修改daemon.json文件,安裝軟件為docker-ce的需要創建daemon.json文件。
測試:
補充:
在使用過程中,發現重啟宿主主機后,macvlan模式會自動關閉,導致使用該功能的容器之間無法通信。
未發現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 #連通性測試
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。