Docker火熱的容器
Docker 是 PaaS 提供商 dotCloud 開源的一個基于 LXC 的高級容器引擎。PaaS(Platform as a Service) 是位于IaaS和SaaS模型之間的一種云服務。
Docker 最初是 dotCloud 公司發起的一個公司內部項目,它是基于 dotCloud 公司多年云服務技術的一次革新。
行業競爭太過激烈公司都要混不下去了,這時dotCloud的領導層做了一個大膽的決定,將項目開源。 2013 年 3月Docker以 Apache 2.0 授權協議開源,主要項目代碼在 GitHub 上進行維護。
Docker 自開源后受到廣泛的關注和討論,至今其 GitHub 項目已經超過 4 萬 6 千個星標和一萬多個 fork。
甚至由于 Docker 項目的火爆,在 2013 年底,dotCloud 公司決定改名為 Docker。
容器生態系統
一個軟件項目成功與否的一個重要特征,是能否帶動一個生態系統的發展,以Docke為代表的容器技術顯然做到了這一點。
當然,容器技術的迅猛發展與其強大的生態系統息息相關。下面通過2張圖來整體審視一下它。
從圖中可以看出,容器技術的生態系統自下而上分別覆蓋了IaaS層和PaaS層涉及的各類問題,包括資源調度、編排、部署、監控、配置管理,存儲網絡管理,安全,容器化應用支撐平臺等。
容器與云計算
20世紀集裝箱徹底顛覆了全球運輸業和世界經濟。而今天,云計算領域的容器就像集裝箱一樣,正在改變世界。
Docker 目前已經得到了眾多公有云平臺的支持,并成為除虛擬機之外的核心云業務。
除了 亞馬遜云AWS、Google、Azure、Docker 官方云服務等,國內的各大公有云廠商,騰訊云、阿里云等基本上都同時支持了虛擬機服務和容器服務,甚至還專門推出了容器云業務。
為什么說 docker 是快速部署?
我們做一個項目,最不想面對的不是開發,也不是調試,而是部署!!!
比如我們使用Python開發了一個項目,我們的環境是 Python3 ,然而客戶1使用的是 Python2 ,客戶2根本沒有 Python 環境。這個時候我們就需要先去新機器上部署 Python。
Python部署完成后,項目里面還要用到 MySQL,安裝完Python 的MySQL模塊。項目里面還有 redis, 兩種非對稱加密,還有三方隊列,還有阿里云的接口……
假設,我們把服務裝進了 docker 中會怎樣呢?
首先安裝docker,再把做好的鏡像使用命令 pull 了下來,再使用命令 docker start XXXXXX,部署就完成了。只要你的環境安裝了docker,部署輕松又簡單。
你說多服務?那就寫個docker-compose.file,同學集群部署了解一下,有Kubernetes、Mesos,Fleet和Swarm 任君挑選。(Swarm,Docker 三劍客項目之一,后面會有介紹)
Docker基本概念
鏡像( Image )
容器( Container )
倉庫( Repository )
理解了這三個概念,就理解了 Docker 的整個生命周期。
? Docker 鏡像是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時準備的一些配置參數(如匿名卷、環境變量、用戶等)。鏡像不包含任何動態數據,其內容在構建之后也不會被改變。
? 容器的實質是進程,但與直接在宿主執行的進程不同,容器進程運行于屬于自己的獨立的命名空間。因此容器可以擁有自己的 root 文件系統、自己的網絡配置、自己的進程空間,甚至自己的用戶 ID 空間。容器內的進程是運行在一個隔離的環境里,類似于沙盒,使用起來,就好像是在一個獨立于宿主的系統下操作一樣。這種特性使得容器封裝的應用比直接在宿主運行更加安全。
? 倉庫( Repository )是集中存放鏡像的地方。與之很容易混淆的概念是注冊服務器( Registry )。注冊服務器是管理倉庫的具體服務器,每個服務器上可以有多個倉庫,而每個倉庫下面有多個鏡像。從這方面來說,倉庫可以被認為是一個具體的項目或目錄。例如對于倉庫地址dl.dockerpool.com/ubuntu 來說,dl.dockerpool.com 是注冊服務器地址, ubuntu 是倉庫名。
Docker 三劍客
Docker Compose 項目
Docker Machine 項目
Docker Swarm 項目
? Docker Compose 是 Docker 官方編排(Orchestration)項目之一,負責快速的部署分布式應用。
在日常工作中,經常會碰到需要多個容器相互配合來完成某項任務的情況。例如要實現一個 Web 項目,除了 Web 服務容器本身,往往還需要再加上后端的數據庫服務容器,甚至還包括負載均衡容器等。
Compose 恰好滿足了這樣的需求。它允許用戶通過一個單獨的dockercompose.yml 模板文件(YAML 格式)來定義一組相關聯的應用容器為一個項目(project)。
Compose 中有兩個重要的概念:
■ 服務 ( service ):一個應用的容器,實際上可以包括若干運行相同鏡像的容器實例。
■ 項目 ( project ):由一組關聯的應用容器組成的一個完整業務單元,在docker-compose.yml 文件中定義。
Compose 的默認管理對象是項目,通過子命令對項目中的一組容器進行便捷地生命周期管理。
Compose 項目由 Python 編寫,實現上調用了 Docker 服務提供的 API 來對容器進行管理。因此,只要所操作的平臺支持 Docker API,就可以在其上利用Compose 來進行編排管理。
? Docker Machine 是 Docker 官方編排(Orchestration)項目之一,負責在多種平臺上快速安裝 Docker 環境。
Docker Machine 項目基于 Go 語言實現,目前在 Github 上進行維護。
Docker Machine 是一個工具,它允許你在虛擬宿主機上安裝 Docker Engine ,并使用 docker-machine 命令管理這些宿主機。你可以使用 Machine 在你本地的 Mac 或 Windows box、公司網絡、數據中心、或像 AWS 或 Digital Ocean 這樣的云提供商上創建 Docker 宿主機。
? Docker Swarm 是 Docker 官方三劍客項目之一,提供 Docker 容器集群服務,是Docker 官方對容器云生態進行支持的核心方案。
使用它,用戶可以將多個 Docker 主機封裝為單個大型的虛擬 Docker 主機,快速打造一套容器云平臺。
相關產品 >
-
OKA40i-C開發板
國產工業級,高清輸出,豐富接口|OKA40i開發板采用底板+核心板結構,基于全志工控行業平臺級處理器四核Cortex-A7 A40i設計,主頻1.2GHz,集成MAli400MP2 GPU,內存1GB/2GB DDR3L,存儲8GB eMMC。 全志A40i工控行業芯片平臺 A40i為國產工控行業芯,全志A40i處理器代表了Allwin在智能工業控制領域的成就。飛凌嵌入式A40i系列OKA40i-C開發板是飛凌推出的一款中國芯,全國產級工業級開發板,適用于適用于基于視覺交互的工業控制產品 了解詳情 -
OKT507-C 開發板
CPU: T507 工業級處理器,超低功耗,10年+生命周期|推薦全志工業級T507開發板系列,飛凌OKT507-C開發板采用全志T507 四核工業級處理器 T507設計開發,Cortex-A53架構,工業級寬溫,性能強,低功耗,是一款高性價比的工業級產品,提供豐富的開發設計資料,提供產品規格書,軟硬件手冊等,全志的T507適用于車載電子、電力、醫療、工業控制、物聯網、智能終端等領域。
了解詳情 -
OKMX8MP-C開發板
內置NPU、ISP,AI計算能力高達2.3TOPS|飛凌嵌入式i.MX8MP 系列-NXP iMX8M Plus 開發板 基于高性能低功耗工業級iMX8MP核心板設計,支持多種多種高速通信接口。iMX8MP開發板內置NPU,AI計算能力2.3TOPS,支持4K,支持雙圖像信號處理器(ISP),是一款支持LinuxQT/android操作系統的iMX8MP開發板。
了解詳情 -
OK3568-C開發板
強而穩,國產芯,1Tops算力,多路高速接口|飛凌RK3568系列RK3568開發板基于國產工業級AI處理器RK3568四核64位Cortex-A55 處理器設計。RK3568作為國產化高性能處理器,瑞芯微RK3568芯片是一款定位中高端的通用型SoC,瑞芯微RK3568芯片是一款定位中高端的通用型SoC,NPU達到1Tops,飛凌RK3568系列核心板提供瑞芯微RK3568規格書_datasheet_數據手冊_原理圖等,