Docker
Docker是一個在單一控制主機上同時運行多虛擬單元(容器)的輕量級的虛擬化解決方案。容器使用內核cgroups和內核名字空間來進行隔離。
完全的虛擬化解決方案,例如:Xen、KVM、libvirt等,都是基於處理器來模擬一個完全的硬件環境,並且可以控制虛擬機。
Docker架構如下:
術語
cgroups:Control Groups是Linux內核的一個特性,cgroups允許將任務(進程)以及他們的子進程聚合或分割到分級的組中,以便對資源進行隔離。
鏡像:專爲Docker容器定製的鏡像,只讀層;
鏡像名:鏡像的名字,Docker命令中將會用到這個鏡像名;
容器:一個運行的Docker鏡像;
容器ID:Docker容器的ID,唯一,用於命令行;
Tag:鏡像的標籤,可自定義;
內核名字空間:內核中用於隔離資源(例如:網絡、用戶、進程等)的特性;
Docker Host Server:運行Docker守護進程的系統,並提供鏡像和cgroups功能;
Registry:Docker鏡像的遠程倉庫;
Repository:保存所有一個鏡像所有版本的倉庫地址;
Docker優勢和侷限性
優勢:
1. 容器之間的應用程序和操作系統隔離;
2. 近乎本地的性能,Docker可以實時管理資源的分配;
3. 支持鏡像多個版本;
4. 可以基於一個已經存在的鏡像來製作新鏡像;
5. Docker Hub允許通過公共和私有倉庫來共享和存儲鏡像;
侷限性:
1. 容器運行在宿主系統的內核中,並且不能使用不同的內核;
2. 目前guest OS只支持Linux系統;
3. Docker不是一個全虛擬化棧;
4. Docker容器的安全性取決於宿主系統的安全性;
容器驅動
Docker有不同的後端驅動來處理容器;
1. libcontainer
2. LXC
3. libvirt-lxc
存儲驅動
1. vfs
2. devicemapper
3. btrfs
4. AUFS