天天看點

Docker 容器化技術介紹(二) 之 Docker 簡介

Docker 容器化技術介紹(一) 之 虛拟化技術

Docker 容器化技術介紹(二) 之 Docker 簡介

Docker 容器化技術介紹(三) 之 Docker 元件

Docker 容器化技術介紹(四) 之 Docker的安裝與啟動

Docker 容器化技術介紹(五) 之 Docker 鏡像操作

Docker 容器化技術介紹(六) 之 Docker 容器操作

Docker 容器化技術介紹(七) 之 Docker 應用部署

Docker 容器化技術介紹(八) 之 Docker 備份與遷移

1 什麼是Docker

        Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實作虛拟化。容器是完全使用沙箱機制,互相之間不會有任何接口;

Docker 容器化技術介紹(二) 之 Docker 簡介

        在計算機的世界中,容器擁有一段漫長且傳奇的曆史。容器與管理程式虛拟化(hypervisor virtualization,HV)有所不同,管理程式虛拟化通過中間層将一台或者多台獨立的機器虛拟運作與實體硬體之上,而容器則是直接運作在作業系統核心之上的使用者空間。是以,容器虛拟化也被稱為“作業系統級虛拟化”,容器技術可以讓多個獨立的使用者空間運作在同一台主控端上。

        由于“客居”于作業系統,容器隻能運作與底層主控端相同或者相似的作業系統,這看起來并不是非常靈活。例如:可以在 Ubuntu 服務中運作 Redhat Enterprise Linux,但無法再 Ubuntu 伺服器上運作 Microsoft Windows。

        相對于徹底隔離的管理程式虛拟化,容器被認為是不安全的。而反對這一觀點的人則認為,由于虛拟容器所虛拟的是一個完整的作業系統,這無疑增大了攻擊範圍,而且還要考慮管理程式層潛在的暴露風險。

        盡管有諸多局限性,容器還是被廣泛部署于各種各樣的應用場合。在超大規模的多租戶服務部署、輕量級沙盒以及對安全要求不太高的隔離環境中,容器技術非常流行。最常見的一個例子就是“權限隔離監牢”(chroot jail),它建立一個隔離的目錄環境來運作程序。如果權限隔離監牢正在運作的程序被入侵者攻破,入侵者便會發現自己“身陷囹圄”,因為權限不足被困在容器所建立的目錄中,無法對主控端進一步破壞。

        最新的容器技術引入了 OpenVZ、Solaris Zones 以及 Linux 容器(LXC)。使用這些新技術,容器不在僅僅是一個單純的運作環境。在自己的權限類内,容器更像是一個完整的主控端。對 Docker 來說,它得益于現代 Linux 特性,如控件組(control group)、命名空間(namespace)技術,容器和主控端之間的隔離更加徹底,容器有獨立的網絡和存儲棧,還擁有自己的資源管理能力,使得同一台主控端中的多個容器可以友好的共存。

        容器被認為是精益技術,因為容器需要的開銷有限。和傳統虛拟化以及半虛拟化相比,容器不需要模拟層(emulation layer)和管理層(hypervisorlayer),而是使用作業系統的系統調用接口。這降低了運作單個容器所需的開銷,也使得主控端中可以運作更多的容器。

        盡管有着光輝的曆史,容器仍未得到廣泛的認可。一個很重要的原因就是容器技術的複雜性:容器本身就比較複雜,不易安裝,管理和自動化也很困難。而 Docker 就是為了改變這一切而生的。

2 docker 與 虛拟化技術的差別

        系統架構上的差別:

Docker 容器化技術介紹(二) 之 Docker 簡介

        使用上的差別:

Docker 容器化技術介紹(二) 之 Docker 簡介

        檔案大小:虛拟機,系統的安裝包非常的大,docker 屬于非常輕量級的,可以做得非常小;

        啟動速度:虛拟啟動時間長,docker像普通程式一樣可以瞬間啟動(同時安裝也是一樣 docker 非常快,虛拟機安裝時間常長)

        內建難道:虛拟機系統內建程式開發比較麻煩,docker 便攜性非常的高;