1.Docker 容器提供了基於進程的隔離;
VM 虛擬機提供了資源的完全隔離;
2.Docker 使用宿主操作系統的內核, 而Vm虛擬機使用獨立的內核;
3.Docker的啟動速度是秒級的, VM是分鍾級的,
4.Docker的集成性比VM好;
理解Docker 和 VMs 的區別
本質上的區別:

VM Vitrual Machine 是在宿主機器,宿主物理機的操作系統上創建虛擬層,虛擬化的操作系統,虛擬化的倉庫,然后再安裝應用,
Container Docker容器, 在宿主機器,宿主操作系統上創建Docker 引擎,在引擎的基礎上再安裝應用。
Docker 容器提供了基於進程的隔離,而VM虛擬機提供了資源的完全隔離容器使用宿主操作系統的內核,而虛擬機使用獨立的內核;
比較兩者所占用的資源
VM中Ubuntu所占內存

Docker容器中Ubuntu鏡像文件所占內存

Startup
Docker 再宿主機器的操作系統上創建Docker 引擎, 直接在宿主主機的操作系統上調用硬件資源,而不是虛擬化操作系統和硬件資源,所以速度快一些;
拉取一個Docker的ubuntu 鏡像文件, 運行一下就知道 速度是秒級的
VM的開啟是分鍾級別的, 一台VM 開啟 大概需要3分鍾的樣子
Intergration
Docker的集成性比VM好
Docker的特點:
1.上手快
Copy-On-Write
Docker 程序擁有很高的性能, 同時同一台宿主機中也可以運行更多的容器。使用戶盡可能的充分利用系統資源
2.職責的邏輯分類
使用 Docker,開發人員只需要關心容器中運行的應用程序,而運維人員只需要關心如 何管理容器。
Docker 設計的目的就是要加強開發人員寫代碼的開發環境與應用程序要部署 的生產環境一致性。
Docker 在保持開發環境和 生產環境的一致性上面 功不可沒。
降低 那種 開發時一切正常, 肯定是運維的問題, (測試環境都是正常的, 上線后出了問題就歸結為運維的問題)
3.快速高效的開發生命周期
Docker 的目標之一就是縮短代碼從開發、測試到部署、上線運行的周期,讓你的應用 程序具備可移植性,易於構建,並易於協作。(通俗一點說,Docker 就像一個盒子,里面 可以裝很多物件,如果需要這些物件的可以直接將該大盒子拿走,而不需要從該盒子中一件 件的取。)
4.鼓勵使用面向服務的架構
Docker 還鼓勵面向服務的體系結構和微服務架構。
Docker 推薦單個容器只運行一個應 用程序或進程,這樣就形成了一個分布式的應用程序模型,在這種模型下,應用程序或者服 務都可以表示為一系列內部互聯的容器,從而使分布式部署應用程序,擴展或調試應用程序 都變得非常簡單,同時也提高了程序的內省性。(當然,可以在一個容器中運行多個應用程 序)
K8S 和Docker 的關系
1.
K8S 是一個開源的容器集群管理系統, 是一套自動化部署的工具
Docker 是一個開源的應用容器引擎, 是一種容器化技術。
2.
docker是容器層面的,kubernetes是容器編排層面的
K8S 提供了應用部署, 規划,更新,維護的一種機制。
