docker是docker.lnc公司開源的一個基於LXC技術之上構建的container容器引(openstack是基於KVM),源代碼託管在GitHub上,基於Go語言並聽從Apache2.0協議開源。python
docker是經過內核(linux內核)虛擬化技術(namespaces及cgroups等)(KVM是基於硬件虛擬化技術來實現的)來提供容器的資源隔離與安全保障等。因爲Docker經過操做系統層的虛擬化實現隔離,因此docker容器在運行時,不須要相似虛擬機(VM)額外的系統開銷,提升資源利用率。linux
docker的組成:docker是一個C/S結構的(C/S就是客戶端/服務器,B/S就是瀏覽器/服務器模式)docker
Docker Clientubuntu
Dockerservercentos
docker的組件:瀏覽器
1,鏡像(p_w_picpath)安全
2,容器(container)服務器
3,倉庫(repository)微信
Docker鏡像網絡
Docker鏡像( Image) 就是一個只讀的模板。
例如:一個鏡像能夠包含一個完整的ubuntu 操做系統環境,裏面僅安裝了 Apache
或用戶須要的其它應用程序。
鏡像能夠用來建立Docker 容器。
Docker提供了一個很簡單的機制來建立鏡像或者更新現有的鏡像,用戶甚至能夠
直接從其餘人那裏下載一個已經作好的鏡像來直接使用。
Docker 容器
Docker利用容器( Container) 來運行應用。
容器是從鏡像建立的運行實例。它能夠被啓動、開始、中止、刪除。每一個容器都是
相互隔離的、保證安全的平臺。
能夠把容器看作是一個簡易版的Linux 環境( 包括root用戶權限、進程空間、用戶
空間和網絡空間等)和運行在其中的應用程序。
*注:鏡像是隻讀的,容器在啓動的時候建立一層可寫層做爲最上層。
Docker 倉庫
倉庫(Repository) 是集中存放鏡像文件的場所。有時候會把倉庫和倉庫註冊服務
器(Registry) 混爲一談,並不嚴格區分。實際上,倉庫註冊服務器上每每存放着
多個倉庫,每一個倉庫中又包含了多個鏡像,每一個鏡像有不一樣的標籤(tag) 。
倉庫分爲公開倉庫(Public) 和私有倉庫( Private) 兩種形式。
最大的公開倉庫是Docker Hub,存放了數量龐大的鏡像供用戶下載。
國內的公開倉庫包括時速雲 、網易雲 等,能夠提供大陸用戶更穩定快速的訪問。
固然,用戶也能夠在本地網絡內建立一個私有倉庫(參考本文「私有倉庫」部分) 。
當用戶建立了本身的鏡像以後就可使用push 命令將它上傳到公有或者私有倉
庫,這樣下次在另一臺機器上使用這個鏡像時候,只須要從倉庫上pull 下來
就能夠了。
*注:Docker倉庫的概念跟 Git 相似,註冊服務器能夠理解爲 GitHub 這樣的託管服
務
容器與虛擬化的區別:containersvs VMS
Docker和傳統虛擬化方式的不一樣之處,可見容器是在操做系統層面上實現虛擬化,直接複用本地主機的操做系統,而傳統方式則是在硬件層面實現。
VM:首先須要有一個server(物理機)上面須要裝一個操做系統host OS,再上去須要起一個虛擬機管理器(好比是KVM,XEN等),而後在上面跑一個虛擬機guest OS,在虛擬機上就能夠跑各類應用了。
containers:須要有一個server(物理機)上面須要裝一個操做系統host OS,而後他是基於docker的一個引擎來建立各個docker,是隔離起來的
docker與openstack的對比:
docker能幹什麼?
1,簡化配置。(環境不一致配置就不一致:測試環境中咱們裝了python的依賴,生產環境沒有裝就會出現上線失敗)(openstack,saltstack也能作)
2,代碼流水線管理(開發寫一個代碼須要開發環境,測試者測試,而後上線)保證全部環境一致(saltstack也能作,保證全部環境都是saltstack)
3,開發效率(新員工入職的時候新機器須要配置不少環境,不一樣業務線的給打包不一樣的鏡像)(openstack起個虛擬機更快,每人一臺虛擬機)docker起在本地可能一斷電就沒了
4,應用隔離(虛擬機是徹底隔離,docker只是一個隔離(openstack起KVM須要佔用資源,docker不用))
5,服務器整合(一個服務器能夠跑多個docker來提升服務器的利用率)
6,調試能力(進入docker調試比較難,虛擬機就方面不少)
7,多租戶(opensatck原本設置就是多租戶,每一個project就是一個租戶)
8,快速部署(體積小,快)(微信春晚搶紅包,一秒鐘啓動上千個docker)
用docker的理由:
1,技術儲備。2,符合當前業務需求,3,速度快
docker的壞處:docker用的是S/C架構,一當服務器掛了,全部的docker都會中止運行。
centos7下載docker :yum installdocker -y
啓動:systemctlstart docker