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