Docker 概述
Docker 是一個(gè)開(kāi)源的應(yīng)用容器引擎,讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。容器是完全使用沙盒機(jī)制,相互之間不會(huì)有任何接口(類似 iPhone 的 app)。幾乎沒(méi)有性能開(kāi)銷,可以很容易地在機(jī)器和數(shù)據(jù)中心中運(yùn)行。最重要的是,他們不依賴于任何語(yǔ)言、框架或包裝系統(tǒng)。
擴(kuò)展:沙盒
沙盒也叫沙箱,英文 sandbox。在計(jì)算機(jī)領(lǐng)域指一種虛擬技術(shù),且多用于計(jì)算機(jī)安全技術(shù)。安全軟件可以先讓它在沙盒中運(yùn)行,如果含有惡意行為,則禁止程序的進(jìn)一步運(yùn)行,而這不會(huì)對(duì)系統(tǒng)造成任何危害。
Docker 是 dotCloud 公司開(kāi)源的一個(gè)基于 LXC 的高級(jí)容器引擎,源代碼托管在 Github 上, 基于 go語(yǔ)言并遵從 Apache2.0 協(xié)議開(kāi)源。
Docker 讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的 container 中,然后發(fā)布到任何流行的 Linux 機(jī)器上。
官方網(wǎng)站:
https://www.docker.com/
docker官方網(wǎng)站
docker [?d?k?(r)] 碼頭工人
logo:
logo
注:docker 服務(wù)相當(dāng)于鯨魚(yú),container 容器就是集裝箱。
container :集裝箱,容器
docker: 碼頭工人
源代碼下載:
https://github.com/docker/docker
擴(kuò)展:
集裝箱是海上運(yùn)貨的一個(gè)創(chuàng)新。
源代碼下載:
https://github.com/docker/docker
docker 容器技術(shù)和虛擬機(jī)對(duì)比:
相同點(diǎn):docker 容器技術(shù)和虛擬機(jī)技術(shù),都是虛擬化技術(shù)。
docker 容器技術(shù)和虛擬機(jī)對(duì)比
總結(jié):docker 相對(duì)于 VM 虛擬機(jī),少了虛擬機(jī)操作系統(tǒng)這一層,所以 docker 效率比虛擬機(jī)高
Docker 架構(gòu)
Docker架構(gòu)
工作流程:服務(wù)器 A 上運(yùn)行 docker Engine 服務(wù),在 docker Engine 上啟動(dòng)很多容器container,從外網(wǎng)Docker Hub上把image操作系統(tǒng)鏡像下載來(lái),放到container容器運(yùn)行。這樣一個(gè)容器的實(shí)例就運(yùn)行起來(lái)了。最后,通過(guò)Docker client對(duì)docker容器虛擬化平臺(tái)進(jìn)行控制。
Image 和 Container 的關(guān)系:image 可以理解為一個(gè)系統(tǒng)鏡像,Container 是 Image 在運(yùn)行時(shí)的一個(gè)狀態(tài)。如果拿虛擬機(jī)作一個(gè)比喻的話,Image 就是關(guān)機(jī)狀態(tài)下的磁盤(pán)文件,Container 就是虛擬機(jī)運(yùn)行時(shí)的磁盤(pán)文件,包括內(nèi)存數(shù)據(jù)。
dockerhub:dockerhub 是docker官方的鏡像存儲(chǔ)站點(diǎn),其中提供了許多常用的鏡像供用戶下載,如 ubuntu, centos 等系統(tǒng)鏡像。通過(guò)dockerhub用戶也可以發(fā)布自己的docker鏡像,為此用戶需要注冊(cè)一個(gè)賬號(hào),在網(wǎng)站上創(chuàng)建一個(gè)docker倉(cāng)庫(kù)。
Docker 核心技術(shù)
1.Namespace — 實(shí)現(xiàn)Container的進(jìn)程、網(wǎng)絡(luò)、消息、文件系統(tǒng)和主機(jī)名的隔離。
2.Cgroup — 實(shí)現(xiàn)對(duì)資源的配額和度量。
注:Cgroup 的配額,可以指定實(shí)例使用的cpu個(gè)數(shù),內(nèi)存大小等。就像如下圖,vmware 虛擬機(jī)中的硬件配置參數(shù)。
虛擬機(jī)配置
Docker特性
文件系統(tǒng)隔離:每個(gè)進(jìn)程容器運(yùn)行在一個(gè)完全獨(dú)立的根文件系統(tǒng)里。
資源隔離:系統(tǒng)資源,像CPU 和內(nèi)存等可以分配到不同的容器中,使用cgroup。
網(wǎng)絡(luò)隔離:每個(gè)進(jìn)程容器運(yùn)行在自己的網(wǎng)絡(luò)空間,虛擬接口和IP地址。
日志記錄:Docker 將會(huì)收集和記錄每個(gè)進(jìn)程容器的標(biāo)準(zhǔn)流(stdout/stderr/stdin),用于實(shí)時(shí)檢索或批量檢索。
變更管理:容器文件系統(tǒng)的變更可以提交到新的鏡像中,并可重復(fù)使用以創(chuàng)建更多的容器。無(wú)需使用模板或手動(dòng)配置。
交互式shell:Docker 可以分配一個(gè)虛擬終端并關(guān)聯(lián)到任何容器的標(biāo)準(zhǔn)輸入上,例如運(yùn)行一個(gè)一次性交互 shell。
優(yōu)點(diǎn):
1.一些優(yōu)勢(shì)和 VM 一樣,但不是所有都一樣。
比 VM 小,比VM快,Docker 容器的尺寸減小相比整個(gè)虛擬機(jī)大大簡(jiǎn)化了分布到云和從云分發(fā)時(shí)間和開(kāi)銷。Docker 啟動(dòng)一個(gè)容器實(shí)例時(shí)間很短,一兩秒就可以啟動(dòng)一個(gè)實(shí)例。
2.對(duì)于在筆記本電腦,數(shù)據(jù)中心的虛擬機(jī),以及任何的云上,運(yùn)行相同的沒(méi)有變化的應(yīng)用程序,IT 的發(fā)布速度更快。
Docker 是一個(gè)開(kāi)放的平臺(tái),構(gòu)建,發(fā)布和運(yùn)行分布式應(yīng)用程序。
Docker 使應(yīng)用程序能夠快速?gòu)慕M件組裝和避免開(kāi)發(fā)和生產(chǎn)環(huán)境之間的摩擦。
3.您可以在部署在公司局域網(wǎng)或云或虛擬機(jī)上使用它。
4.開(kāi)發(fā)人員并不關(guān)心具體哪個(gè) Linux 操作系統(tǒng)
使用 Docker,開(kāi)發(fā)人員可以根據(jù)所有依賴關(guān)系構(gòu)建相應(yīng)的軟件,針對(duì)他們所選擇的操作系統(tǒng)。然后,在部署時(shí)一切是完全一樣的,因?yàn)橐磺卸荚?DockerImage 的容器在其上運(yùn)行。開(kāi)發(fā)人員負(fù)責(zé)并且能夠確保所有的相關(guān)性得到滿足。
5.Google,微軟,亞馬遜,IBM 等都支持 Docker。
6.Docker 支持 Unix/Linux 操作系統(tǒng),也支持 Windows 戒 Mac
缺點(diǎn)局限性:
1.Docker 用于應(yīng)用程序時(shí)是最有用的,但并不包含數(shù)據(jù)。日志,跟蹤和數(shù)據(jù)庫(kù)等通常應(yīng)放在 Docker容器外。 一個(gè)容器的鏡像通常都很小,不適合存大量數(shù)據(jù),存儲(chǔ)可以通過(guò)外部掛載的方式使用。比如使用:NFS,ipsan,NFS 等, -v 映射磁盤(pán)分區(qū)
一句話:docker 就來(lái)用于計(jì)算,存儲(chǔ)交給別人。
oracle不適合使用 docker 來(lái)運(yùn)行,太大了,存儲(chǔ)的數(shù)據(jù)太多。
-
Linux
+關(guān)注
關(guān)注
87文章
11123瀏覽量
207920 -
虛擬機(jī)
+關(guān)注
關(guān)注
1文章
888瀏覽量
27814 -
Docker
+關(guān)注
關(guān)注
0文章
446瀏覽量
11738
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論