Docker
什麼是Docker?
Docker 是基于 Go 語言實作的開源容器項目, 誕生于 2013 年年初, 最初發起者是 dotCloud 公司.
Docker 項目已經加入了 Linux 基金會, 并遵循 Apache2.0 協定開源.
Dokcer 是一款輕量級, 高性能的虛拟化技術, 目前網際網路使用最多的虛拟化技術, Docker 虛拟化技術的本質類似集裝箱機制, Docker 虛拟化是一個開源的容器引擎,可以讓開發者打包他們的應用程式及依賴包到一個可移植的容器中, 然後釋出到任何機器上運作.
Docker 的基礎是 Linux容器(LXC)等技術, 在 LXC 的基礎上 Docker 進行了進一步的封裝, 使用者可以不關心容器的管理, 使得操作更為簡單, 使用者操作 Docker 的容器就像操作一個快速輕量級的虛拟機一樣簡單.
虛拟化的概念
虛拟化就是把實體資源轉換為邏輯可以管理的資源, 可以打破實體結構之間的壁壘, 計算元件運作在虛拟的基礎上而不是真實的基礎, 可以擴大硬體的容量, 簡化軟體的重新配置過程.
虛拟化技術允許在一個平台同時運作多個作業系統, 并且應用程式都可以再互相獨立的空間内運作而互不影響,進而顯著提高計算機的工作效率, 是一個為了簡化管理,優化資源的解決方案.
虛拟化解決方案的底部是要進行虛拟化的實體機器,這台機器可能直接支援虛拟化,也可能不會直接支援虛拟化,那麼就需要系統管理程式層的支援。虛拟機管理程式(Virtual machine monitor),或稱為 VMM,可以看作是平台硬體和作業系統的抽象化,VMM本質是我們常說的虛拟化技術軟體。
目前主流的虛拟化技術:
- KVM
- ESXI
- XEN
- Hyper-V
KVM虛拟化概念
KVM 虛拟化全稱為: kernel-based Virtual Machine, 是一個開源的系統虛拟化子產品, 基于核心的虛拟機.
KVm 是一款支援虛拟機的技術, 是Linux 核心中的一個功能子產品, 他在 linux -2.6.20 之後的任何 Linux 分支中都被支援,
Qemu
QEMU是一個主機上的VMM(virtual machine monitor),也是一款虛拟化技術,就算不是用 KVM ,單純的 qemu 也可以完全實作虛拟機.
Qemu-kvm 也是一種虛拟化技術, 他對 kvm 技術的不足(網卡的虛拟),和性能上進行了優化.
Libvirt
Libvirt 提供一系列函數庫, 用其他技術調用, 來管理機器上的虛拟機, 包括各種虛拟機技術, KVM, Xen 與LXC,不同虛拟機技術就可以使用不同驅動調用 Libvirt 提供的 api 對虛拟機進行管理, 我們建立的各種虛拟機都是基于 libvirt 庫機相關指令進行管理.

Docker 與 傳統架構虛拟化對比
特 性 | 容 器 | 虛拟機 |
啟動速度 | 秒級 | 分鐘級 |
性能 | 接近原生 | 較弱 |
記憶體代價 | 很小 | 較多 |
磁盤使用 | 一般為 MB | 一般為GB |
運作密度 | 支援上千個容器 | 一般幾十個 |
隔離性 | 安全隔離 | 完全隔離 |
遷移性 | 優秀 | 一般 |
傳統虛拟化結構
KVM, XEN, ESXI 傳統虛拟化(完全,半虛拟化)都是在硬體的基礎上, 基于現有的作業系統層面上實作虛拟化,但是不能服用本地主機的作業系統,而必須虛拟出自己的 Guest OS 系統, 然後在Guest OS系統上部署相關的 APP.
Docker虛拟化結構
Docker虛拟化技術是在硬體的基礎上, 基于現有的作業系統層面上實作虛拟化, 直接服用本地主機的作業系統, 直接運作 Docker容器, 在 Docker 容器中封裝相關的 APP.
LXC技術
Docker 容器化技術結構體系最早為 LXC (Linux Container) + AUFS(Another Union File System) 結構組合. Docker 0.9.0 版本開始引入 LibContainer技術.
LXC 也是一種虛拟化的解決方案, LXC 是基于核心級的虛拟化技術, Linux 作業系統軟體服務程序之是以能夠獨立, 并且系統能夠控制每個服務程序的 CPU, 記憶體資源也是得益于 LXC 容器技術.
Docker 虛拟化技術是在 LXC 技術上進一步封裝, 在 Docker 虛拟化技術中, LXC 主要負責資源管理, 而 AUFS 主要負責鏡像管理, 而 LXC 又包括 Cgroups, NameSpace,Chroot 等元件,并通過 Cgroups進行資源管理.
Cgroups
Cgroups 又名 Control groups, 是 Linux 核心提供的一種可以限制, 記錄, 隔離程序組所使用的實體資源(CPU, Memory, IO,NET)的機制.
Docker快速入門
Docker的安裝
[root@test1 ~]# wget -O /etc/yum.repos.d/docker-ce.repo https://mirror.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
替換
:%s#https://download.docker.com/linux/#https://mirror.tuna.tsinghua.edu.cn/docker-ce/linux/#g
[root@test1 ~]# yum install docker-ce -y
Docker加速
編輯檔案: /etc/docker/daemon.json 沒有則建立檔案.
1. 官方加速器 docker.cn
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
2. 阿裡雲加速器
容器鏡像服務 --> 鏡像加速器
3. 163加速器
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
作者:闫世成
出處:http://cnblogs.com/yanshicheng
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接。如有問題或建議,請聯系上述郵箱,非常感謝。