Docker容器技術(shù)
Docker
2010 年,在美國舊金山成立了一家名叫 dotCloud 的公司。這家公司主要提供基于 PaaS 的云計算技術(shù)服務(wù)。具體來說,是和 LXC 有關(guān)的容器技術(shù)
LXC(Linux Container)是一種輕量級的虛擬化技術(shù),可以隔離進(jìn)程和資源,提供了在單一可控主機(jī)節(jié)點(diǎn)上支持多個相互隔離的 Server Container 同時執(zhí)行的機(jī)制。Container 有效地將由單個操作系統(tǒng)管理的資源劃分到孤立的組中,以更好地在孤立的組之間平衡有沖突的資源使用需求。Container 將應(yīng)用程序與操作系統(tǒng)解耦,這意味著用戶擁有了一個 Container 就近似的擁有了一個輕量且具有一定隔離性的操作系統(tǒng)運(yùn)行時(Runtime)。
LXC 類似于 Chroot,提供了一個擁有自己進(jìn)程和網(wǎng)絡(luò)空間的虛擬環(huán)境,但又有別于虛擬機(jī),因為 LXC 是一種操作系統(tǒng)層次上的資源的虛擬化,本質(zhì)是一種操作系統(tǒng)虛擬化技術(shù),基于 Linux Kernel 的 cgroups 和 namespace 實現(xiàn)。
namespace 用于完成資源的隔離。
cgroups 用于完成進(jìn)程對資源使用的限制和管理。
后來,dotCloud 公司將自己的容器技術(shù)進(jìn)行了簡化和標(biāo)準(zhǔn)化,并命名為 Docker。Docker 誕生之初,并沒有引起行業(yè)的關(guān)注。而 dotCloud 公司在激烈的競爭之下,決定將 Docker 開源。
2013 年 3 月,dotCloud 公司的創(chuàng)始人之一,28 歲的 Solomon?Hykes 正式?jīng)Q定將 Docker 項目開源。開源當(dāng)月,Docker 0.1 版本發(fā)布。此后的每一個月,Docker 都會發(fā)布一個版本。到 2014 年 6 月 9 日,Docker 1.0 版本正式發(fā)布。此時的 Docker,已經(jīng)成為行業(yè)里人氣最火爆的開源技術(shù)。dotCloud 公司也干脆把公司名字也改成了 Docker Inc.。
在容器技術(shù)之前,業(yè)界的網(wǎng)紅是虛擬機(jī)。虛擬機(jī)屬于服務(wù)器虛擬化技術(shù)。而 Docker 這樣輕量級的虛擬化,屬于操作系統(tǒng)虛擬化技術(shù)。

Docker Container 的啟動時間很快,幾秒鐘就能完成。而且,它對資源的利用率很高,一臺主機(jī)可以同時運(yùn)行幾千個 Docker Container。此外,它占的空間很小,虛擬機(jī)一般要幾 GB 到幾十 GB 的空間,而容器只需要 MB 級甚至 KB 級。

實際上要理解 Docker 并不困難,主要是兩句口號:
“Build, Ship and Run.”:構(gòu)建、分發(fā)、運(yùn)行。
“Build?once, Run?anywhere.”:構(gòu)建一次,到處運(yùn)行。
Docker 的三大核心概念,分別是:
鏡像(Image)
容器(Container)
倉庫(Repository)
簡而言之,Docker 就是一個 Golang 開發(fā)的開源容器引擎技術(shù),最初基于 LXC 來實現(xiàn)。在 LXC 的基礎(chǔ)之上,實現(xiàn)了幾項重大的更改,通過類似 Git 的操作方式來構(gòu)建、分發(fā) Image,使 Container 的使用更加便捷和靈活。
