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