在 Docker 出現之前,虛擬化技術的主要形式是全虛擬化。在全虛擬化中,一個虛擬機是一個完全獨立于宿主機的、完整的操作系統環境,包括操作系統內核、系統工具和應用程序。
這種方法的優點是高度隔離,不同虛擬機之間的應用完全獨立,互不干擾。但是,它的缺點也同樣明顯。每個虛擬機都需要運行一個完整的操作系統,占用大量處理器、內存和存儲資源。
$ docker run -it ubuntu /bin/bash root@f8f4534563d9:/#
隨著云計算、大數據、微服務等新興技術的應用越來越廣泛,人們開始尋找一種更好的虛擬化技術。這種技術需要在隔離性和資源利用率之間取得一個平衡。Docker 技術應運而生。
Docker 是一個開源的虛擬化平臺,基于 Linux 的 cgroups、namespace、AUFS 等技術,提供了更高效、更可靠的虛擬化解決方案。Docker 將應用程序運行時的環境打包成容器(Container),在容器中運行,就像一個獨立的進程,可以在任意支持 Docker 的主機上運行。
$ docker pull nginx $ docker run --name mynginx -d nginx
Docker 基于容器的原理,應用隔離和虛擬化的思想,將虛擬機的體系結構劃分為了兩個層次:宿主機和容器。宿主機為 Docker 引擎和操作系統,容器中存放應用及其依賴的環境。這種方式既具備虛擬機的高度隔離性,還避免了虛擬機運行的資源浪費問題。
總之,Docker 技術的出現為虛擬化技術帶來了新的思路和技術方式,可以更好地滿足當下云計算等 IT 技術快速發展的需求。它不僅可以提高 IT 系統的資源利用率,還可以極大地簡化應用程序的打包、部署和管理過程。