Docker火熱的容器

原創(chuàng) 2020-03-07 16:31:00 Docker


Docker 是 PaaS 提供商 dotCloud 開源的一個(gè)基于 LXC 的高級(jí)容器引擎。PaaS(Platform as a Service) 是位于IaaS和SaaS模型之間的一種云服務(wù)。

 

 

Docker 最初是 dotCloud 公司發(fā)起的一個(gè)公司內(nèi)部項(xiàng)目,它是基于 dotCloud 公司多年云服務(wù)技術(shù)的一次革新。

 

行業(yè)競(jìng)爭(zhēng)太過激烈公司都要混不下去了,這時(shí)dotCloud的領(lǐng)導(dǎo)層做了一個(gè)大膽的決定,將項(xiàng)目開源。 2013 年 3月Docker以 Apache 2.0 授權(quán)協(xié)議開源,主要項(xiàng)目代碼在 GitHub 上進(jìn)行維護(hù)。

Docker 自開源后受到廣泛的關(guān)注和討論,至今其 GitHub 項(xiàng)目已經(jīng)超過 4 萬 6 千個(gè)星標(biāo)和一萬多個(gè) fork。

甚至由于 Docker 項(xiàng)目的火爆,在 2013 年底,dotCloud 公司決定改名為 Docker。

 

容器生態(tài)系統(tǒng)

一個(gè)軟件項(xiàng)目成功與否的一個(gè)重要特征,是能否帶動(dòng)一個(gè)生態(tài)系統(tǒng)的發(fā)展,以Docke為代表的容器技術(shù)顯然做到了這一點(diǎn)。

當(dāng)然,容器技術(shù)的迅猛發(fā)展與其強(qiáng)大的生態(tài)系統(tǒng)息息相關(guān)。下面通過2張圖來整體審視一下它。

 

 

 

從圖中可以看出,容器技術(shù)的生態(tài)系統(tǒng)自下而上分別覆蓋了IaaS層和PaaS層涉及的各類問題,包括資源調(diào)度、編排、部署、監(jiān)控、配置管理,存儲(chǔ)網(wǎng)絡(luò)管理,安全,容器化應(yīng)用支撐平臺(tái)等。

容器與云計(jì)算

20世紀(jì)集裝箱徹底顛覆了全球運(yùn)輸業(yè)和世界經(jīng)濟(jì)。而今天,云計(jì)算領(lǐng)域的容器就像集裝箱一樣,正在改變世界。

Docker 目前已經(jīng)得到了眾多公有云平臺(tái)的支持,并成為除虛擬機(jī)之外的核心云業(yè)務(wù)。

除了 亞馬遜云AWS、Google、Azure、Docker 官方云服務(wù)等,國(guó)內(nèi)的各大公有云廠商,騰訊云、阿里云等基本上都同時(shí)支持了虛擬機(jī)服務(wù)和容器服務(wù),甚至還專門推出了容器云業(yè)務(wù)。

為什么說 docker 是快速部署?

我們做一個(gè)項(xiàng)目,最不想面對(duì)的不是開發(fā),也不是調(diào)試,而是部署?。?!

比如我們使用Python開發(fā)了一個(gè)項(xiàng)目,我們的環(huán)境是 Python3 ,然而客戶1使用的是 Python2 ,客戶2根本沒有 Python 環(huán)境。這個(gè)時(shí)候我們就需要先去新機(jī)器上部署 Python。

Python部署完成后,項(xiàng)目里面還要用到 MySQL,安裝完P(guān)ython 的MySQL模塊。項(xiàng)目里面還有 redis, 兩種非對(duì)稱加密,還有三方隊(duì)列,還有阿里云的接口…… 

 

 

 

假設(shè),我們把服務(wù)裝進(jìn)了 docker 中會(huì)怎樣呢?

首先安裝docker,再把做好的鏡像使用命令 pull 了下來,再使用命令 docker start XXXXXX,部署就完成了。只要你的環(huán)境安裝了docker,部署輕松又簡(jiǎn)單。

你說多服務(wù)?那就寫個(gè)docker-compose.file,同學(xué)集群部署了解一下,有Kubernetes、Mesos,F(xiàn)leet和Swarm 任君挑選。(Swarm,Docker 三劍客項(xiàng)目之一,后面會(huì)有介紹)

 

Docker基本概念

鏡像( Image )

容器( Container )

倉庫( Repository )

理解了這三個(gè)概念,就理解了 Docker 的整個(gè)生命周期。

? Docker 鏡像是一個(gè)特殊的文件系統(tǒng),除了提供容器運(yùn)行時(shí)所需的程序、庫、資源、配置等文件外,還包含了一些為運(yùn)行時(shí)準(zhǔn)備的一些配置參數(shù)(如匿名卷、環(huán)境變量、用戶等)。鏡像不包含任何動(dòng)態(tài)數(shù)據(jù),其內(nèi)容在構(gòu)建之后也不會(huì)被改變。

? 容器的實(shí)質(zhì)是進(jìn)程,但與直接在宿主執(zhí)行的進(jìn)程不同,容器進(jìn)程運(yùn)行于屬于自己的獨(dú)立的命名空間。因此容器可以擁有自己的 root 文件系統(tǒng)、自己的網(wǎng)絡(luò)配置、自己的進(jìn)程空間,甚至自己的用戶 ID 空間。容器內(nèi)的進(jìn)程是運(yùn)行在一個(gè)隔離的環(huán)境里,類似于沙盒,使用起來,就好像是在一個(gè)獨(dú)立于宿主的系統(tǒng)下操作一樣。這種特性使得容器封裝的應(yīng)用比直接在宿主運(yùn)行更加安全。

? 倉庫( Repository )是集中存放鏡像的地方。與之很容易混淆的概念是注冊(cè)服務(wù)器( Registry )。注冊(cè)服務(wù)器是管理倉庫的具體服務(wù)器,每個(gè)服務(wù)器上可以有多個(gè)倉庫,而每個(gè)倉庫下面有多個(gè)鏡像。從這方面來說,倉庫可以被認(rèn)為是一個(gè)具體的項(xiàng)目或目錄。例如對(duì)于倉庫地址dl.dockerpool.com/ubuntu 來說,dl.dockerpool.com 是注冊(cè)服務(wù)器地址, ubuntu 是倉庫名。

 

Docker 三劍客

Docker Compose 項(xiàng)目

Docker Machine 項(xiàng)目

Docker Swarm 項(xiàng)目

 

? Docker Compose 是 Docker 官方編排(Orchestration)項(xiàng)目之一,負(fù)責(zé)快速的部署分布式應(yīng)用。

在日常工作中,經(jīng)常會(huì)碰到需要多個(gè)容器相互配合來完成某項(xiàng)任務(wù)的情況。例如要實(shí)現(xiàn)一個(gè) Web 項(xiàng)目,除了 Web 服務(wù)容器本身,往往還需要再加上后端的數(shù)據(jù)庫服務(wù)容器,甚至還包括負(fù)載均衡容器等。

Compose 恰好滿足了這樣的需求。它允許用戶通過一個(gè)單獨(dú)的dockercompose.yml 模板文件(YAML 格式)來定義一組相關(guān)聯(lián)的應(yīng)用容器為一個(gè)項(xiàng)目(project)。

Compose 中有兩個(gè)重要的概念:

■ 服務(wù) ( service ):一個(gè)應(yīng)用的容器,實(shí)際上可以包括若干運(yùn)行相同鏡像的容器實(shí)例。

■ 項(xiàng)目 ( project ):由一組關(guān)聯(lián)的應(yīng)用容器組成的一個(gè)完整業(yè)務(wù)單元,在docker-compose.yml 文件中定義。

Compose 的默認(rèn)管理對(duì)象是項(xiàng)目,通過子命令對(duì)項(xiàng)目中的一組容器進(jìn)行便捷地生命周期管理。

Compose 項(xiàng)目由 Python 編寫,實(shí)現(xiàn)上調(diào)用了 Docker 服務(wù)提供的 API 來對(duì)容器進(jìn)行管理。因此,只要所操作的平臺(tái)支持 Docker API,就可以在其上利用Compose 來進(jìn)行編排管理。

 

? Docker Machine 是 Docker 官方編排(Orchestration)項(xiàng)目之一,負(fù)責(zé)在多種平臺(tái)上快速安裝 Docker 環(huán)境。

Docker Machine 項(xiàng)目基于 Go 語言實(shí)現(xiàn),目前在 Github 上進(jìn)行維護(hù)。

Docker Machine 是一個(gè)工具,它允許你在虛擬宿主機(jī)上安裝 Docker Engine ,并使用 docker-machine 命令管理這些宿主機(jī)。你可以使用 Machine 在你本地的 Mac 或 Windows box、公司網(wǎng)絡(luò)、數(shù)據(jù)中心、或像 AWS 或 Digital Ocean 這樣的云提供商上創(chuàng)建 Docker 宿主機(jī)。

? Docker Swarm 是 Docker 官方三劍客項(xiàng)目之一,提供 Docker 容器集群服務(wù),是Docker 官方對(duì)容器云生態(tài)進(jìn)行支持的核心方案。

使用它,用戶可以將多個(gè) Docker 主機(jī)封裝為單個(gè)大型的虛擬 Docker 主機(jī),快速打造一套容器云平臺(tái)。

 

 




相關(guān)產(chǎn)品 >

  • OKA40i-C開發(fā)板

    國(guó)產(chǎn)工業(yè)級(jí),高清輸出,豐富接口|OKA40i開發(fā)板采用底板+核心板結(jié)構(gòu),基于全志工控行業(yè)平臺(tái)級(jí)處理器四核Cortex-A7 A40i設(shè)計(jì),主頻1.2GHz,集成MAli400MP2 GPU,內(nèi)存1GB/2GB DDR3L,存儲(chǔ)8GB eMMC。 全志A40i工控行業(yè)芯片平臺(tái) A40i為國(guó)產(chǎn)工控行業(yè)芯,全志A40i處理器代表了Allwin在智能工業(yè)控制領(lǐng)域的成就。飛凌嵌入式A40i系列OKA40i-C開發(fā)板是飛凌推出的一款中國(guó)芯,全國(guó)產(chǎn)級(jí)工業(yè)級(jí)開發(fā)板,適用于適用于基于視覺交互的工業(yè)控制產(chǎn)品 了解詳情
    OKA40i-C開發(fā)板
  • OKT507-C 開發(fā)板

    CPU: T507 工業(yè)級(jí)處理器,超低功耗,10年+生命周期|推薦全志工業(yè)級(jí)T507開發(fā)板系列,飛凌OKT507-C開發(fā)板采用全志T507 四核工業(yè)級(jí)處理器 T507設(shè)計(jì)開發(fā),Cortex-A53架構(gòu),工業(yè)級(jí)寬溫,性能強(qiáng),低功耗,是一款高性價(jià)比的工業(yè)級(jí)產(chǎn)品,提供豐富的開發(fā)設(shè)計(jì)資料,提供產(chǎn)品規(guī)格書,軟硬件手冊(cè)等,全志的T507適用于車載電子、電力、醫(yī)療、工業(yè)控制、物聯(lián)網(wǎng)、智能終端等領(lǐng)域。

    了解詳情
    OKT507-C 開發(fā)板
  • OKMX8MP-C開發(fā)板

    內(nèi)置NPU、ISP,AI計(jì)算能力高達(dá)2.3TOPS|飛凌嵌入式i.MX8MP 系列-NXP iMX8M Plus 開發(fā)板 基于高性能低功耗工業(yè)級(jí)iMX8MP核心板設(shè)計(jì),支持多種多種高速通信接口。iMX8MP開發(fā)板內(nèi)置NPU,AI計(jì)算能力2.3TOPS,支持4K,支持雙圖像信號(hào)處理器(ISP),是一款支持LinuxQT/android操作系統(tǒng)的iMX8MP開發(fā)板。

    了解詳情
    OKMX8MP-C開發(fā)板
  • OK3568-C開發(fā)板

    強(qiáng)而穩(wěn),國(guó)產(chǎn)芯,1Tops算力,多路高速接口|飛凌RK3568系列RK3568開發(fā)板基于國(guó)產(chǎn)工業(yè)級(jí)AI處理器RK3568四核64位Cortex-A55 處理器設(shè)計(jì)。RK3568作為國(guó)產(chǎn)化高性能處理器,瑞芯微RK3568芯片是一款定位中高端的通用型SoC,瑞芯微RK3568芯片是一款定位中高端的通用型SoC,NPU達(dá)到1Tops,飛凌RK3568系列核心板提供瑞芯微RK3568規(guī)格書_datasheet_數(shù)據(jù)手冊(cè)_原理圖等,


    了解詳情
    OK3568-C開發(fā)板

推薦閱讀 換一批 換一批