Docker 是一個開源專案,誕生於 2013 年初,最初是 dotCloud 公司內部的一個業餘專案。它基於 Google公司推出的 Go 語言實作。 專案後來加入了 Linux 基金會,遵從了 Apache 2.0 協議,原始碼在 GitHub 上進行維護。

 

Docker 自開源後受到廣泛的關注和討論,以至於 dotCloud 公司後來都改名為 Docker Inc。Redhat 已經在其 RHEL6.5 中集中支援 Docker;Google 也在其 PaaS 產品中廣泛應用。


Docker 專案的目標是實作輕量級的作業系統虛擬化解決方案。 Docker 的基礎是 Linux 容器(LXC)等技術。


在 LXC 的基礎上 Docker 進行了進一步的封裝,讓使用者不需要去關心容器的管理,使得操作更為簡便。


使用者操作 Docker 的容器就像操作一個快速輕量級的虛擬機一樣簡單。

  
下面的圖片比較了 Docker 和傳統虛擬化方式的不同之處,可見容器是在作業系統層面上實作虛擬化,直接
使用本地主機的作業系統,而傳統方式則是在硬體層面實作。

 

Docker與傳統虛擬機差異

 

對比傳統虛擬機總結

 

特性 容器 虛擬機
啟動 秒級 分鐘級
硬碟容量 一般為MB 一般為GB
效能 接近原生 比較慢
系統支援量 單機支援上千的容器 一般幾十個

 

 

 

 

 

 

Docker 包括三個基本概念
映像檔(Image)   

一個映像檔可以包含一個完整的 ubuntu 作業系統環境,裡面僅安裝了 Apache 或使用者需要的其它應用程式。


容器(Container)

容器是從映像檔建立的執行實例。它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平台。

*註:映像檔是唯讀的,容器在啟動的時候建立一層可寫層作為最上層。


倉庫(Repository) 

倉庫是集中存放映像檔檔案的場所。有時候會把倉庫和倉庫註冊伺服器(Registry)混為一談,並不嚴格區分。實際上,倉庫註冊伺服器上往往存放著多個倉庫,每個倉庫中又包含了多個映像檔,每個映像檔有不同的標籤(tag)。

倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式。最大的公開倉庫是 Docker Hub,存放了數量龐大的映像檔供使用者下載。 大陸的公開倉庫包括 DockerPool 等,可以提供大陸使用者更穩定快速的存取。

*註:Docker 倉庫的概念跟 Git 類似,註冊伺服器可以理解為 GitHub 這樣的託管服務

 

Docker 安裝

Ubuntu 系列安裝 Docker

透過系統內建套件安裝

$ sudo apt-get update

$ sudo apt-get install -y docker.io

$ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker

$ sudo sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io

$ curl -sSL https://get.docker.com/ubuntu/ | sudo sh

 安裝之後啟動 Docker 服務。

$ sudo service docker start

取得映像檔

可以使用 docker pull 命令從倉庫取得所需要的映像檔。

 

$ sudo docker pull ubuntu:12.04

Pulling repository ubuntu
ab8e2728644c: Pulling dependent layers
511136ea3c5a: Download complete
5f0ffaa9455e: Download complete
a300658979be: Download complete
904483ae0c30: Download complete
ffdaafd1ca50: Download complete
d047ae21eeaf: Download complete

 

完成後,即可隨時使用該映像檔了,例如建立一個容器,讓其中執行 bash。

 

$ sudo docker run -t -i ubuntu:12.04 /bin/bash
root@fe7fc4bd8fc9:/#

 

 

 

 

創作者介紹
創作者 忽倫 的頭像
忽倫

一段輝煌的回憶,一個冬日的故事

忽倫 發表在 痞客邦 留言(0) 人氣()