從今天開始學習Docker,經過對網上資料的蒐集與學習,記錄一下。linux
是什麼 ?docker
Docker是一個基於LXC實現的相似於VMs的超輕量級虛擬機。ubuntu
它與VMs的區別在於,VMs提供的是一個完整的操做系統虛擬環境,從硬件層次上,包含了大量相似硬件驅動、虛擬處理器、網絡接口等等並不須要的信息,而且虛擬機也須要比較長時間的啓動,同時也會消耗大量的內存、CPU 資源。windows
而Docker 擴展了 Linux 容器(Linux Containers),或着說 LXC,經過一個高層次的 API 爲進程單獨提供了一個輕量級的虛擬環境。Docker 利用了 LXC, cgroups 和 Linux 本身的內核。和傳統的虛擬機不一樣的是,一個 Docker 容器並不包含一個單獨的操做系統,而是基於已有的基礎設施中操做系統提供的功能來運行的。服務器
Docker 會像一個可移植的容器引擎那樣工做。它把應用程序及全部程序的依賴環境打包到一個虛擬容器中,這個虛擬容器能夠運行在任何一種 Linux 服務器上。網絡
而且Docker並不會像普通虛擬機同樣包含操做系統內核,也不須要虛擬一切硬件平臺,它直接經過Docker Engine在宿主機平臺上進行調度,從而大大減小了調用的複雜度,減小了運行的時間。curl
Docker 由下面這些組成:
1. Docker 服務器守護程序(server daemon),用於管理全部的容器。
2. Docker 命令行客戶端,用於控制服務器守護程序。
3. Docker 鏡像:查找和瀏覽 docker 容器鏡像。性能
Docker的優勢:學習
1. 啓動速度塊,一般1秒就能啓動。測試
2. 資源利用率高,單位宿主機可同時運行的容器多。
3. 性能開銷很小。
Docker的缺陷:
1. Docker是基於Linux 64bit的,沒法在windows/unix或32bit的linux環境下使用
2. LXC是基於cgroup等linux kernel功能的,所以container的guest系統只能是linux base的
3. 隔離性相比KVM之類的虛擬化方案仍是有些欠缺,全部container公用一部分的運行庫
4. 網絡管理相對簡單,主要是基於namespace隔離
5. cgroup的cpu和cpuset提供的cpu功能相比KVM的等虛擬化方案相比難以度量(因此dotcloud主要是按內存收費)
6. docker對disk的管理比較有限
7. container隨着用戶進程的中止而銷燬,container中的log等用戶數據不便收集
怎麼裝 ?
關於安裝一個新的東東,最靠譜仍是官方的文檔了。
官方以ubuntu爲例,個人系統爲Debian,安裝方法大體相同。
一、更新源:
sudo apt-get update
二、添加Docker的repository到你的本地祕鑰庫:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
三、將Docker添加到你的apt軟件安裝源:
sudo sh -c "echo deb http://get.docker.io/ubuntu docker main /etc/apt/sources.list.d/docker.list"
四、更新:
sudo apt-get update
五、安裝Docker:
sudo apt-get install lxc-docker
安裝完畢後,輸出docker測試,若是安裝成功了會出現:
表示安裝成功了。
官方還提供了一個簡單的腳原本幫助你安裝Docker,只要運行這個指令:
curl -s https://get.docker.io/ubuntu/ | sudo sh
一切就循序漸進的進行了。
以上是舊版本的安裝方法,Docker正式版出來以後,Debain/Ubuntu用戶能夠直接使用命令:
sudo apt-get install docker.io
來一鍵安裝docker!
怎麼用 ?
如今咱們來試試運行一個Hello World!
首先獲取一個ubuntu鏡像:
sudo docker pull ubuntu
若是感受慢,能夠從docker中文官網介紹的同樣,從國內的鏡像點下載:
docker pull docker.cn/docker/ubuntu
待下載完後:
運行:
root@amd64:~# docker run docker.cn/docker/ubuntu /bin/echo xxxxx
效果:
這個是最簡單的例子,更多應用,慢慢探索!