Docker火熱的容器
Docker 是 PaaS 提供商 dotCloud 開(kāi)源的一個(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)太過(guò)激烈公司都要混不下去了,這時(shí)dotCloud的領(lǐng)導(dǎo)層做了一個(gè)大膽的決定,將項(xiàng)目開(kāi)源。 2013 年 3月Docker以 Apache 2.0 授權(quán)協(xié)議開(kāi)源,主要項(xiàng)目代碼在 GitHub 上進(jìn)行維護(hù)。
Docker 自開(kāi)源后受到廣泛的關(guān)注和討論,至今其 GitHub 項(xiàng)目已經(jīng)超過(guò) 4 萬(wàn) 6 千個(gè)星標(biāo)和一萬(wàn)多個(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)。下面通過(guò)2張圖來(lái)整體審視一下它。
從圖中可以看出,容器技術(shù)的生態(tài)系統(tǒng)自下而上分別覆蓋了IaaS層和PaaS層涉及的各類問(wèn)題,包括資源調(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ù)。
為什么說(shuō) docker 是快速部署?
我們做一個(gè)項(xiàng)目,最不想面對(duì)的不是開(kāi)發(fā),也不是調(diào)試,而是部署!!!
比如我們使用Python開(kāi)發(fā)了一個(gè)項(xiàng)目,我們的環(huán)境是 Python3 ,然而客戶1使用的是 Python2 ,客戶2根本沒(méi)有 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 了下來(lái),再使用命令 docker start XXXXXX,部署就完成了。只要你的環(huán)境安裝了docker,部署輕松又簡(jiǎn)單。
你說(shuō)多服務(wù)?那就寫個(gè)docker-compose.file,同學(xué)集群部署了解一下,有Kubernetes、Mesos,F(xiàn)leet和Swarm 任君挑選。(Swarm,Docker 三劍客項(xiàng)目之一,后面會(huì)有介紹)
Docker基本概念
鏡像( Image )
容器( Container )
倉(cāng)庫(kù)( Repository )
理解了這三個(gè)概念,就理解了 Docker 的整個(gè)生命周期。
? Docker 鏡像是一個(gè)特殊的文件系統(tǒng),除了提供容器運(yùn)行時(shí)所需的程序、庫(kù)、資源、配置等文件外,還包含了一些為運(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)境里,類似于沙盒,使用起來(lái),就好像是在一個(gè)獨(dú)立于宿主的系統(tǒng)下操作一樣。這種特性使得容器封裝的應(yīng)用比直接在宿主運(yùn)行更加安全。
? 倉(cāng)庫(kù)( Repository )是集中存放鏡像的地方。與之很容易混淆的概念是注冊(cè)服務(wù)器( Registry )。注冊(cè)服務(wù)器是管理倉(cāng)庫(kù)的具體服務(wù)器,每個(gè)服務(wù)器上可以有多個(gè)倉(cāng)庫(kù),而每個(gè)倉(cāng)庫(kù)下面有多個(gè)鏡像。從這方面來(lái)說(shuō),倉(cāng)庫(kù)可以被認(rèn)為是一個(gè)具體的項(xiàng)目或目錄。例如對(duì)于倉(cāng)庫(kù)地址dl.dockerpool.com/ubuntu 來(lái)說(shuō),dl.dockerpool.com 是注冊(cè)服務(wù)器地址, ubuntu 是倉(cāng)庫(kù)名。
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è)容器相互配合來(lái)完成某項(xiàng)任務(wù)的情況。例如要實(shí)現(xiàn)一個(gè) Web 項(xiàng)目,除了 Web 服務(wù)容器本身,往往還需要再加上后端的數(shù)據(jù)庫(kù)服務(wù)容器,甚至還包括負(fù)載均衡容器等。
Compose 恰好滿足了這樣的需求。它允許用戶通過(guò)一個(gè)單獨(dú)的dockercompose.yml 模板文件(YAML 格式)來(lái)定義一組相關(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)目,通過(guò)子命令對(duì)項(xiàng)目中的一組容器進(jìn)行便捷地生命周期管理。
Compose 項(xiàng)目由 Python 編寫,實(shí)現(xiàn)上調(diào)用了 Docker 服務(wù)提供的 API 來(lái)對(duì)容器進(jìn)行管理。因此,只要所操作的平臺(tái)支持 Docker API,就可以在其上利用Compose 來(lái)進(jìn)行編排管理。
? Docker Machine 是 Docker 官方編排(Orchestration)項(xiàng)目之一,負(fù)責(zé)在多種平臺(tái)上快速安裝 Docker 環(huán)境。
Docker Machine 項(xiàng)目基于 Go 語(yǔ)言實(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開(kāi)發(fā)板
國(guó)產(chǎn)工業(yè)級(jí),高清輸出,豐富接口|OKA40i開(kāi)發(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開(kāi)發(fā)板是飛凌推出的一款中國(guó)芯,全國(guó)產(chǎn)級(jí)工業(yè)級(jí)開(kāi)發(fā)板,適用于適用于基于視覺(jué)交互的工業(yè)控制產(chǎn)品 了解詳情 -
OKT507-C 開(kāi)發(fā)板
CPU: T507 工業(yè)級(jí)處理器,超低功耗,10年+生命周期|推薦全志工業(yè)級(jí)T507開(kāi)發(fā)板系列,飛凌OKT507-C開(kāi)發(fā)板采用全志T507 四核工業(yè)級(jí)處理器 T507設(shè)計(jì)開(kāi)發(fā),Cortex-A53架構(gòu),工業(yè)級(jí)寬溫,性能強(qiáng),低功耗,是一款高性價(jià)比的工業(yè)級(jí)產(chǎn)品,提供豐富的開(kāi)發(fā)設(shè)計(jì)資料,提供產(chǎn)品規(guī)格書,軟硬件手冊(cè)等,全志的T507適用于車載電子、電力、醫(yī)療、工業(yè)控制、物聯(lián)網(wǎng)、智能終端等領(lǐng)域。
了解詳情 -
OKMX8MP-C開(kāi)發(fā)板
內(nèi)置NPU、ISP,AI計(jì)算能力高達(dá)2.3TOPS|飛凌嵌入式i.MX8MP 系列-NXP iMX8M Plus 開(kāi)發(fā)板 基于高性能低功耗工業(yè)級(jí)iMX8MP核心板設(shè)計(jì),支持多種多種高速通信接口。iMX8MP開(kāi)發(fā)板內(nèi)置NPU,AI計(jì)算能力2.3TOPS,支持4K,支持雙圖像信號(hào)處理器(ISP),是一款支持LinuxQT/android操作系統(tǒng)的iMX8MP開(kāi)發(fā)板。
了解詳情 -
OK3568-C開(kāi)發(fā)板
強(qiáng)而穩(wěn),國(guó)產(chǎn)芯,1Tops算力,多路高速接口|飛凌RK3568系列RK3568開(kāi)發(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è)_原理圖等,