亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 基礎常識 > 正文

全面講解Docker容器技術的基本概念

2020-10-21 21:51:04
字體:
來源:轉載
供稿:網友

什么是Docker?
docker的英文本意是碼頭工人,也就是搬運工,這種搬運工搬運的是集裝箱(Container),集裝箱里面裝的可不是商品貨物,而是任意類型的App,Docker把App(叫Payload)裝在Container內,通過Linux Container技術的包裝將App變成一種標準化的、可移植的、自管理的組件,這種組件可以在你的latop上開發、調試、運行,最終非常方便和一致地運行在production環境下。
Docker的核心底層技術是LXC(Linux Container),Docker在其上面加了薄薄的一層,添加了許多有用的功能。這篇stackoverflow上的問題和答案很好地詮釋了Docker和LXC的區別,能夠讓你更好的了解什么是Docker, 簡單翻譯下就是以下幾點:
Docker提供了一種可移植的配置標準化機制,允許你一致性地在不同的機器上運行同一個Container;而LXC本身可能因為不同機器的不同配置而無法方便地移植運行;
Docker以App為中心,為應用的部署做了很多優化,而LXC的幫助腳本主要是聚焦于如何機器啟動地更快和耗更少的內存;
Docker為App提供了一種自動化構建機制(Dockerfile),包括打包,基礎設施依賴管理和安裝等等;
Docker提供了一種類似git的Container版本化的機制,允許你對你創建過的容器進行版本管理,依靠這種機制,你還可以下載別人創建的Container,甚至像git那樣進行合并;
Docker Container是可重用的,依賴于版本化機制,你很容易重用別人的Container(叫Image),作為基礎版本進行擴展;
Docker Container是可共享的,有點類似github一樣,Docker有自己的INDEX,你可以創建自己的Docker用戶并上傳和下載Docker Image;
Docker提供了很多的工具鏈,形成了一個生態系統;這些工具的目標是自動化、個性化和集成化,包括對PAAS平臺的支持等;
那么Docker有什么用呢?對于運維來說,Docker提供了一種可移植的標準化部署過程,使得規?;⒆詣踊?、異構化的部署成為可能甚至是輕松簡單的事情;而對于開發者來說,Docker提供了一種開發環境的管理方法,包括映像、構建、共享等功能。
Docker vs. VM
從下圖可以看出,VM是一個運行在宿主機之上的完整的操作系統,VM運行自身操作系統會占用較多的CPU、內存、硬盤資源。Docker不同于VM,只包含應用程序以及依賴庫,基于libcontainer運行在宿主機上,并處于一個隔離的環境中,這使得Docker更加輕量高效,啟動容器只需幾秒鐘之內完成。由于Docker輕量、資源占用少,使得Docker可以輕易的應用到構建標準化的應用中。但Docker目前還不夠完善,比如隔離效果不如VM,共享宿主機操作系統的一些基礎庫等;網絡配置功能相對簡單,主要以橋接方式為主;查看日志也不夠方便靈活。
20151214120810180.png (1024×637)

另外,IBM發表了一篇關于虛擬機和Linux container性能對比的論文,論文中實際測試了虛擬機和Linux container在CPU、內存、存儲IO以及網絡的負載情況,結果顯示Docker容器本身幾乎沒有什么開銷,但是使用AUFS會一定的性能損耗,不如使用Docker Volume,Docker的NAT在較高網絡數據傳輸中會引入較大的工作負載,帶來額外的開銷。不過container的性能與native相差不多,各方面的性能都一般等于或者優于虛擬機。Container和虛擬機在IO密集的應用中都需要調整優化以更好的支持IO操作,兩者在IO密集型的應用中都應該謹慎使用。
Docker組件
20151214120832920.png (850×651)

Docker是CS架構,主要由下面三部分組成:
Docker daemon: 運行在宿主機上,Docker守護進程,用戶通過Docker client(Docker命令)與Docker daemon交互
Docker client: Docker 命令行工具,是用戶使用Docker的主要方式,Docker client與Docker daemon通信并將結果返回給用戶,Docker client也可以通過socket或者RESTful api訪問遠程的Docker daemon
Docker hub/registry: 共享和管理Docker鏡像,用戶可以上傳或者下載上面的鏡像,官方地址為https://registry.hub.docker.com/,也可以搭建自己私有的Docker registry。
了解了Docker的組成,再來了解一下Docker的兩個主要概念:
Docker image:鏡像是只讀的,鏡像中包含有需要運行的文件。鏡像用來創建container,一個鏡像可以運行多個container;鏡像可以通過Dockerfile創建,也可以從Docker hub/registry上下載。
Docker container:容器是Docker的運行組件,啟動一個鏡像就是一個容器,容器是一個隔離環境,多個容器之間不會相互影響,保證容器中的程序運行在一個相對安全的環境中。
Docker網絡
Docker的網絡功能相對簡單,沒有過多復雜的配置,Docker默認使用birdge橋接方式與容器通信,啟動Docker后,宿主機上會產生docker0這樣一個虛擬網絡接口, docker0不是一個普通的網絡接口, 它是一個虛擬的以太網橋,可以為綁定到docker0上面的網絡接口自動轉發數據包,這樣可以使容器與宿主機之間相互通信。每次Docker創建一個容器,會產生一對虛擬接口,在宿主機上執行ifconfig,會發現多了一個類似veth****這樣的網絡接口,它會綁定到docker0上,由于所有容器都綁定到docker0上,容器之間也就可以通信。
在宿主機上執行ifconfig,會看到docker0這個網絡接口, 啟動一個container,再次執行ifconfig, 會有一個類似veth****的interface,每個container的缺省路由是宿主機上docker0的ip,在container中執行netstat -r可以看到如下圖所示內容:
20151214120852453.png (560×108)

容器中的默認網關跟docker0的地址是一樣的:
20151214120908027.png (503×171)

當容器退出之后,veth*虛擬接口也會被銷毀。
除bridge方式,Docker還支持host、container、none三種網絡通信方式,使用其它通信方式,只要在Docker啟動時,指定--net參數即可,比如:

復制代碼
代碼如下:

docker run -i -t --net=host ubuntu /bin/bash

host方式可以讓容器無需創建自己的網絡協議棧,而直接訪問宿主機的網絡接口,在容器中執行ip addr會發現與宿主機的網絡配置是一樣的,host方式讓容器直接使用宿主機的網絡接口,傳輸數據的效率會更加高效,避免bridge方式帶來的額外開銷,但是這種方式也可以讓容器訪問宿主機的D-bus等網絡服務,可能會帶來意想不到的安全問題,應謹慎使用host方式;container方式可以讓容器共享一個已經存在容易的網絡配置; none方式不會對容器的網絡做任務配置,需要用戶自己去定制。
Docker生態
隨著Docker迅速火遍全球, 以Docker為基礎的生態系統也迅速的發展起來,從以部署和運行container為基礎的CoreOS到各種各樣的管理工具和PaaS軟件,Docker以及生態產品都在迅猛發展,以下介紹幾個代表性的軟件。
首先介紹CoreOS,它的出現極大地推動了Docker技術的推廣和發展,CoreOS是專門為大規模服務部署而設計的一種新的Linux發行版,通過運行輕量級的容器方便擴展和維護大規模的服務。它具有以下特點:
CoreOS使用container管理服務(容器即服務),即以容器的角度去管理服務,服務的代碼和依賴都打包到容器里,打包后的容器直接在CoreOS上運行管理。通過容器用戶不再需要關注虛擬機環境等,極大地降低了服務和系統環境的耦合性。另外部署在CoreOS的多個容器都運行在各自獨立的環境中,不會相互影響。
CoreOS專門為cluster等大規模部署而設計,提供了Etcd進行服務發現,以及Fleet管理容器保證服務可用。
CoreOS更加精簡,比如RAM使用比普通Linux低40%。
CoreOS采用雙分區模式(Dual-Partition),主分區為主動模式,負責系統運行,被動模式分區負責系統更新,更新時將整個CoreOS系統下載下來。
CoreOS是為集群服務而設計的,提供了Etcd、Fleet等管理工具管理容器和服務。Etcd是一種類似Zookeeper的分布式key/value存儲服務,用于服務發現和配置管理。Fleet是容器管理工具,保證服務的可用性,當某個機器的服務不可用時,Fleet會將服務遷移到其它機器上運行。
Docker生態中還有一個非常重要的容器管理工具--Kubernetes,它是Google開源的用于在集群環境中管理、維護、自動擴展容器,通過Kubernetes可以很方便地在多個機器上管理和部署容器服務?,F在已經得到IBM、Microsoft、RedHat等多個大公司的支持。
在Kubernetes中pod是一個基本單元,一個pod可以是提供相同功能的多個container,這些容器會被部署在同一個minion上。Replication controller定義了多個pod或者容器需要運行,如果當前集群中運行的pod或容器達不到配置的數量,replication controller會調度容器在多個minion上運行,保證集群中的pod數量。service則定義真實對外提供的服務,一個service會對應后端運行的多個container。Kubernetes的架構由一個master和多個minion組成,master通過api提供服務,接受kubectl的請求來調度管理整個集群。minion是運行Kubelet的機器,它接受master的指令創建pod或者容器。
最后介紹一下基于Docker實現的PaaS軟件,Docker PaaS軟件中以Deis和Flynn最為知名。Deis是基于Docker和CoreOS實現的輕量級的PaaS,受到Heroku的啟發,遵循“十二要素”構建應用方法。Deis是以應用程序為中心設計的,分為build、release、run三個階段,用戶執行"git push"后,Deis使用Docker 容器編譯并將編譯結果保存在Docker鏡像;發布階段,一次build和配置文件產生一個數字標識的發布鏡像,將發布鏡像保存到Docker registry中以供后續發布到線上運行;運行階段應用鏡像會被調度到主機上運行,并更新相應的路由。Flynn與Deis類似,也是以應用為中心,Flynn組件分為兩層,layer0是底層資源的抽象,主要負責資源調度以及服務發現等,為上層應用容器的運行提供底層資源調度支持;layer1處理具體應用,通過Docker容器編譯、部署和維護上層應用程序。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线播放国产精品| 亚洲伦理中文字幕| 正在播放国产一区| 久久久久久久一| 久久69精品久久久久久国产越南| 在线色欧美三级视频| 久久久免费在线观看| 国产福利精品视频| 国产欧美精品xxxx另类| 一本大道久久加勒比香蕉| 亚洲精品视频免费在线观看| 中文字幕精品—区二区| 亚洲福利视频网站| 午夜精品视频在线| 亚洲xxxx在线| 欧美日韩午夜视频在线观看| 欧美激情xxxx| 国产日韩欧美一二三区| 欧美中文字幕在线播放| 亚洲成人av片| 国产精品v片在线观看不卡| 国模吧一区二区| 中文字幕日韩欧美| 国产日韩欧美日韩大片| 亚洲成人在线视频播放| 亚洲精品中文字幕av| 亚洲跨种族黑人xxx| 亚洲国产成人精品女人久久久| 深夜福利日韩在线看| 亚洲色图av在线| 欧美色视频日本高清在线观看| 亚洲影院污污.| 亚洲国产欧美精品| 中文字幕精品一区二区精品| 国产精品一区二区久久久久| 亚洲国产成人91精品| 久久99精品国产99久久6尤物| 国产精品美腿一区在线看| 中文字幕在线精品| 欧美日韩福利视频| 欧美一区在线直播| 亚洲成av人片在线观看香蕉| 国产婷婷色综合av蜜臀av| 亚洲国产精品人人爽夜夜爽| 69久久夜色精品国产69| 亚洲美女www午夜| 亚洲一区二区久久久久久久| 福利二区91精品bt7086| 欧美日韩中文字幕| 国产91精品久久久久久久| 亚洲精品免费在线视频| 国产99视频在线观看| 国产91在线播放| 亚洲网站在线播放| 在线丨暗呦小u女国产精品| 亲子乱一区二区三区电影| 久久综合伊人77777| www.亚洲免费视频| 色黄久久久久久| 亚洲一级一级97网| 狠狠爱在线视频一区| 亚洲精品一区久久久久久| 69久久夜色精品国产69乱青草| 日韩在线精品视频| 色综合天天狠天天透天天伊人| 久久免费高清视频| 欧美又大又粗又长| 日韩黄色av网站| 国产91精品黑色丝袜高跟鞋| 日韩经典中文字幕| 国产在线观看精品一区二区三区| 97视频人免费观看| 91av在线看| 国产精品久久视频| 久久久久久久成人| 97热在线精品视频在线观看| 欧美亚洲国产日韩2020| 亚洲国产精品久久久久久| 国产在线久久久| 欧美日韩精品二区| 欧美大片免费观看在线观看网站推荐| 国产精品一区二区三区成人| 欧美色道久久88综合亚洲精品| 欧美日在线观看| 在线播放日韩欧美| 国产精品久久久久久久午夜| 国产精品欧美风情| 亚洲一区国产精品| 国产成人在线一区二区| 成人国产精品久久久久久亚洲| 亚洲精品福利在线观看| 久久免费少妇高潮久久精品99| 91精品国产沙发| 亚洲一区二区久久久久久久| 欧美极品少妇xxxxⅹ裸体艺术| 日韩在线小视频| 中文字幕久热精品在线视频| 一本一道久久a久久精品逆3p| 在线激情影院一区| 久久人人爽人人爽人人片av高请| 久久久久久久久久国产精品| 亚洲美腿欧美激情另类| www.美女亚洲精品| 国产精品国产亚洲伊人久久| 欧美色视频日本高清在线观看| 亚洲国产精品久久久| 亚洲一区二区在线| 成人在线观看视频网站| 亚洲成人在线视频播放| 欧美激情xxxx性bbbb| 欧美成人一区在线| 国产视频综合在线| 国产精品久久精品| 亚洲欧洲日产国码av系列天堂| 911国产网站尤物在线观看| 欧美在线视频免费| 亚洲精品中文字| 欧美夫妻性生活xx| 国产精品jizz在线观看麻豆| 国产小视频国产精品| 日韩av在线免费看| 国产精品2018| 91经典在线视频| 91精品国产99| 中文字幕亚洲一区在线观看| 国产成人av在线| 国产精品日日摸夜夜添夜夜av| 久久久久久久成人| 亚洲精品成人久久| 91欧美精品午夜性色福利在线| 亚洲女在线观看| 欧美另类99xxxxx| 亚洲国产成人精品女人久久久| 亚洲精品电影在线| 91免费观看网站| 超在线视频97| 国产亚洲欧洲在线| 亚洲女成人图区| 国产成人一区三区| 国产一区二区三区网站| 九九久久国产精品| 欧美一性一乱一交一视频| 久久精品国产欧美激情| 一区二区三区国产在线观看| 精品久久久久久中文字幕| 91精品视频一区| 911国产网站尤物在线观看| 国产精品免费看久久久香蕉| 亚洲а∨天堂久久精品喷水| 国产精品久久久久9999| 欧美日韩成人在线播放| 欧美激情视频在线免费观看 欧美视频免费一| 国产在线精品自拍| 茄子视频成人在线| 97视频色精品| 国外成人免费在线播放| 国语自产在线不卡| 亚洲第一页中文字幕| 欧美大尺度在线观看| 不卡av电影在线观看| 亚洲新声在线观看| 欧美激情精品久久久久久变态| 日本一区二区在线免费播放| 日韩高清a**址|