1. 程式人生 > >centos7下安裝docker(15.2跨主機網路-overlay)

centos7下安裝docker(15.2跨主機網路-overlay)

為支援容器跨主機通訊,Docker提供了overlay driver,使使用者可以建立基於VxLAN的overlay網路。VxLAN可將二層資料封裝到UDP進行傳輸,VxLAN提供與VLAN相同的乙太網二層服務,但是擁有更強的擴充套件性和靈活性。

Docker overlay網路需要一個key-value資料庫用於儲存網路資訊狀態,包括Network,Endpoint,IP等。Consul,Etcd和Zookeeper都是docker支援的key-value軟體,今天討論的是consul

試驗環境描述:直接使用上一章docker-machine環境

在docker1:192.168.7.235和docker2:192.168.7.231上實踐各種跨主機網路方案,在192.168.7.222上部署支援的元件

consul:

最簡單的方式就是以容器的方式執行consul:docker run -d -p 8500:8500 -h consul --name consul progrium/consul --server -bootstrap

注:我是在之前做docker-machine192.168.7.222環境下執行的容器,在這個上面要自己部署一個docker服務,當然也可以利用docker-machine去建立,但是不知道為什麼我的不成功,只好自己部署

執行完這個容器之後,通過網頁可以訪問到http:192.168.7.222:8500

 然後修改docker1和docker2的docker daemon的配置檔案:vim /etc/systemd/system/docker.service.d/10-machine.conf

--cluster-store=consul://192.168.7.222:8500 告知consul地址

--cluster-advertis=ens190:2376 告知consul自己的連線地址

注:這裡一定要注意--cluster-store=consul://。。。。;還有網絡卡地址一定要正確

重啟docker daemon

systemctl daemon-reload

systemctl restart docker。service

docker1與docker2將自動註冊到consul資料庫中,訪問http:192.168.7.222:8500可以看到以下

目前的實驗環境如下,盜圖:

建立overlay網路

docker network create -d overlay over

注意到over的SCOPE為global,而其他的網路為local,

在docker上面檢視網路

docker2上面也能看到over網路,這是因為在docker1上面建立的over將over存入了consul,docker2在consul中讀取到新的網路資料,之後over又任何的變動都會同步到docker1和docker2

 IPAM:IP address management,docker自動為over分配的IP空間為10.0.0.0/24

 在overlay中執行容器

檢視容器的網路配置:

可以看到我們執行的容器中有兩個網路介面eth0和eth1,從IP地址可以看出eth0走的是overlay網路over,而eth1是172.18.0的網段的是容器的預設路由,這個預設的路由在哪來的呢?

其實,docker 會建立一個bridge網路“docker bridge”,為所有連線到overlay網路的容器提供外網訪問能力

通過docker network inspect docker_gwbridge

可以看出docker_gwbridge的IP地址範圍是172.18.0.0/16,當前連線的是172.18.0.2

而且此網路的閘道器就是網橋docker_bridge的ip172.18.0.1

這樣容器就可以通過docker_gwbridge訪問外網

其實容器訪問外網還是通過NAT的模式實現的

外部訪問容器也還是通過埠對映實現的

overlay跨主機通訊

在docker2上面執行一個over的容器

讓這個docker2上面的新建的容器去pingdocker1上面之前執行的容器,發現是可以ping通的

在docker2上面新建一個容器,不指定網路,進入容器發現沒有橋接網絡卡eth1,無法ping通docker2上的其他容器以及docker1中的容器

可見overlay網路中的容器,無論是否在同一個host上都能進行通訊,同時docker也實現了DNS服務。

overlay的隔離:

不同的overlay時相互隔離的

建立另一個overlay網路over2,執行一個over2的容器

可以看到新的容器的eth0網路是10.0.1.2/24,eth1的是172.18.0.3/16

無法ping通over網路的容器,即使他們在使用同一個docker_gwbridge

如果想要over和over2的容器之間能夠互相通訊,可以通過docker network connect over/over2 <容器>

overlay IPAM:

docker 預設為overlay網路分配24為子網掩碼的子網,所有主機共享這個subnet,容器啟動的時候是按照順序從此空間分配IP,我們也可以通過--subnet指定

建立網路:通過--subnet和--gateway指定網路的網段和剛關

執行容器,通過--ip指定容器IP

相關推薦

centos7安裝docker15.2主機網路-overlay

為支援容器跨主機通訊,Docker提供了overlay driver,使使用者可以建立基於VxLAN的overlay網路。VxLAN可將二層資料封裝到UDP進行傳輸,VxLAN提供與VLAN相同的乙太網二層服務,但是擁有更強的擴充套件性和靈活性。 Docker overlay網路需要一個key-value

centos7安裝docker15.3主機網路-macvlan

除了ovrlay,docker還開發了另一個支援跨主機容器的driver:macvlan macvlan本身是linu kernel模組,其功能是允許在同一物理網絡卡上配置多了MAC地址,即:多個interface,每個interface可以配置自己的ip。macvlan本身是一種網絡卡虛擬化技術,Dock

centos7安裝docker14.2主機網絡-overlay

活性 用戶 driver 試驗 mach 實踐 point ogr drive 為支持容器跨主機通信,Docker提供了overlay driver,使用戶可以創建基於VxLAN的overlay網絡。VxLAN可將二層數據封裝到UDP進行傳輸,VxLAN提供與VLAN相同的

centos7安裝docker15.4主機網絡-flannel

url eos 配置 實現 國外 ken 由於 con pin flannel是CoreOS開發的容器網絡解決方案,flannel為每一個host分配一個subnet,容器從這些subnet中分配IP,這些IP可以在host之間路由,容器無需NAT和port mapping

centos7安裝docker15.7容器主機網絡---calico

信息 https 用戶 client /usr ctc onf pan 映射 Calico是一個純三層的虛擬網絡方案,Calico為每個容器分配一個IP,每個host都是router,把不同host的容器連接起來。與vxlan不同的是:calico不對數據包進行封裝,不需要

centos7安裝docker15.5容器主機網路--flanneld

flannel是由CoreOS研究的一種覆蓋網路(overlay network)網路工具,目的是幫助每一個host主機有一個完整的子網; 功能是:讓叢集中不同節點的主機建立的容器都有一個唯一的虛擬IP 工作原理:將TCP資料包裝在另一種網路包裡進行路由轉發和通訊,目前已經支援UDP,Vxlan,AWS,AP

centos7安裝docker10容器底層--cgroup和namespace

sys bsp 內存 更改 ont sha 進入 logs 一個 cgroup和namespace是實現容器底層的重要技術 cgroup:實現資源限制 namespace:實現資源隔離 1.cgroup:control group Linux操作系統通過cgroup可以設置

centos7安裝docker13.1docker存儲--data volume

ron 鏡像 .cn 空間 ges bind 存在 src 設置 我們現在知道docker 有兩種存儲方式:storage driver和data volume stroage driver這種存儲方式主要是存儲那些無狀態的數據,是鏡像層和容器層組成的,而data volu

centos7安裝docker17.5docker監控的總結對比

單獨使用 收集 host font 容易 scope pan 建議 數據模型 到現在為止,我已經學習了docker自帶的監控方案:ps/ls/top/stats,以及sysdig,weave scope,cadvisor,prometheus多種監控工具,現在做個總結和比較

centos7安裝docker18.3docker日誌---logging driver---fluentd

發送 dcoker 一個 tag 連接 選擇 路徑 logging logs 前面我們學的ELK中用filebeat收集docker容器日誌,利用的是dcoker默認的logging driver json-file,下面我們用fluentd來收集容器日誌 Flue

centos7安裝docker2鏡像

world 組成 啟動 ges src img es2017 base .com docker最小的鏡像——hello-world 下載鏡像 docker pull docker pull hello-world 查看鏡像 docker images docker im

centos7安裝docker9容器對資源的使用限制-內存

span 解決辦法 9.png doc etc pac out 內核 count 一個docker Host上面會運行若幹容器,每個容器都需要CPU,內存和IO資源。容器提供了控制分配多少CPU,內存給每個容器的機制,避免摸個容器因占用太多資源而

centos7安裝docker9.3容器對資源的使用限制-Block IO

緩存 centos 文件 機制 font nbsp 有效 之間 找到 Block IO:指的是磁盤的讀寫,docker 可以通過設置權重,限制bps和iops的方式控制容器讀寫磁盤的帶寬 註:目前block IO限額只對direct IO(不使用文件緩存)有效。 1.Blo

centos7安裝docker11容器操作總結

創建 centos 安裝 pause 共享內存 打印 volume -a bytes 這段時間主要是學習了對容器的操作,包括:容器的狀態:start,stop,restart,rename,pause,unpause,rm,attach,exec,kill,logs;還學習

centos7安裝docker12.3容器之間的連通性

daemon 2.3 es2017 命令 selinux bridge 之前 -- 9.png 我們接著盜圖,如下: 在這張圖上,可以看到,如果兩個容器使用同一個bridge,那麽兩個容器之間是互相能通的 可以看到兩個容器在同一個bridge下是可以互相ping通的

centos7安裝docker12.4容器如何與外部進行通信

tro net ont 安裝docker 數據包 pin pdu 網卡 asq 1.容器如何訪問外部 前面我們做了很多試驗:只要host能連外網,使用默認bridge(docker0)創建得容器就能訪問外網,那麽容器是怎樣訪問外網的呢? 註:這裏的外網不僅是inte

centos7安裝docker12.5容器在單個host上的網絡總結

centos 查看 轉換成 跨主機 地址 -s 外部 spec 創建 單個host上的容器的網絡:通過本章的學習,我們知道docker默認有三種網絡,可以通過docker network ls查看; none:封閉的網絡,通過--network=none來指定; host:

centos7安裝docker17docker監控---docker自帶監控命令

img 數據 spa 查看 監控 pan top 可用 mage Docker自帶的監控子命令 1.docker ps;docker ps -a這是我們常用的查看容器狀態的命令 docker container ls和docker ps的功能一樣 2.docker to

centos7安裝docker17.3docker監控---cAdvisor

web iso 定位 var com 收集器 tps 網絡流 container cAdvisor是google開發的容器監控工具 1。在host上運行cadvisor容器 docker run -d -p 8080:8080 --name cadvisor -v /:/

centos7安裝docker18docker日誌---docker logs

生產環境 參數 錯誤 out 日誌 圖片 打印 沒有 httpd 在微服務架構中,由於容器的數量眾多以及快速變化的特性使得記錄日誌和監控變得越來越重要,考慮到容器的短暫和不固定周期,當我們需要排查問題的時候容器可能不在了。因此,一套集中式的日誌管理系統是生產環境中不可或缺的