Docker 簡介
Docker 項目誕生于 2013 年初,最初是 dotCloud 公司內(nèi)部的一個業(yè)余項目,基于 Google 公司推出的 Go 語言實現(xiàn)。 項目后來加入了 Linux 基金會,遵從了 Apache 2.0 協(xié)議,項目代碼在 GitHub 上進行維護。
1. Docker 是什么
Docker 是一個開源的應(yīng)用容器引擎,開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個可移植的鏡像中,然后發(fā)布到任何流行的 Linux 或 Windows 機器上。
如圖所示的是一個 Docker 的 Logo,它生動描述了 Docker 這個產(chǎn)品的本質(zhì):軟件行業(yè)的集裝箱。
集裝箱是指具有一定強度、剛度和規(guī)格專供周轉(zhuǎn)使用的大型裝貨容器。對于絕大多數(shù)的貨物,我們不需要專門定制化運輸船。在一艘大型貨船上,各種各樣的貨物被集裝箱標準化,可以把貨物規(guī)整地擺放運輸,各個集裝箱之間互相隔離,不會影響。
我們將 Docker 與集裝箱做個類比,方便我們理解 Docker:
傳統(tǒng)行業(yè)集裝箱 | Docker |
---|---|
貨物的實體 | 軟件應(yīng)用和自身運行依賴的環(huán)境 |
具有統(tǒng)一的規(guī)格,便于運輸 | 運行環(huán)境的統(tǒng)一性 |
與外界環(huán)境隔離 | 容器之間互不影響 |
2. Docker 誕生背景
一個新技術(shù)的普及過程中,除了帶有技術(shù)本身的酷炫色彩,一定也伴隨著生產(chǎn)效率的提升和成本的降低。
在軟件產(chǎn)品的傳統(tǒng)開發(fā)流程中,軟件從開發(fā)到上線,從操作系統(tǒng)安裝,到運行環(huán)境依賴,再到應(yīng)用配置,需要消耗大量技術(shù)資源在很多瑣碎無意義的運維工作上。
隨著虛擬機和云計算的普及,許多公司開始租用 AWS 或 OpenStack 的虛擬機,用腳本在這些機器上自動化部署,但這個過程中會碰到云端虛擬機和本地環(huán)境不一致的問題, 解決起來依舊費時費力。
為了解決這些問題,PaaS 平臺服務(wù)(Platform-as-a-service)誕生了。 PaaS 有應(yīng)用托管的能力,提供與開發(fā)環(huán)境相同的運行環(huán)境。PaaS 會為每一個應(yīng)用單獨創(chuàng)建一個隔離環(huán)境,然后在隔離環(huán)境中啟動這些應(yīng)用進程,從而達到多個用戶的應(yīng)用互不干涉地在虛擬機里批量、自動運行起來的目的。
而 Docker 屬于新一代的 PaaS 項目, 它脫胎于 Linux Container (LXC)技術(shù),與先前的 PaaS 不同的是,Docker 把 Cgroups、Namespace 和 UnionFS 等一系列技術(shù)整合起來,極大地降低了容器技術(shù)的復(fù)雜度,提升了開發(fā)者的用戶體驗。Docker 公司定義了以容器鏡像為標準的應(yīng)用打包格式,并且建立 Docker Hub 服務(wù)進行鏡像分發(fā)和協(xié)作。這些舉措迅速創(chuàng)建了一個良好的社區(qū)和合作伙伴生態(tài)圈,其中包括 AWS、Google、Microsoft、IBM 等行業(yè)巨頭和國內(nèi)的眾多公司。
3. 為什么要學習 Docker ?
這里我們先打打“雞血”。對于個人來說,我們學習的動力主要有兩部分,其一是掌握 Docker 使用可以提升自身競爭力,其二是 Docker 在我們?nèi)粘J褂弥幸材芴峁┎簧俦憷?,掌握接下來的基礎(chǔ)部分后,我們會有一節(jié)重新仔細地總結(jié)一下 Docker 的優(yōu)勢。
4. 本課程的學習基礎(chǔ)
除了前言部分提到的 Linux 基礎(chǔ),我們最好對計算機網(wǎng)絡(luò)和操作系統(tǒng)方面的知識也有所涉獵。當然,在學習的過程中,遇到不理解的知識再去學習也是一個不錯的方法,帶著問題學技術(shù)也是快速提升自己能力的一個好辦法。
5. 小結(jié)
由于 Docker 帶來的巨大的便利,讓很多開發(fā)、測試和運維等軟件開發(fā)環(huán)節(jié)上的工作被簡化,許多大型科技企業(yè)都參與到了 Docker 相關(guān)領(lǐng)域的貢獻中來,為 Docker 及其生態(tài)圈貢獻了許多優(yōu)秀的軟件項目,大大豐富了 Docker 生態(tài)。
Docker 技術(shù)帶來了很多新的概念和工具,通過綜合運用這些技術(shù),用戶可以快速構(gòu)建和部署這些容器。后面的小節(jié)中我們會一一將 Docker 的魅力展現(xiàn)給大家。