1.什么是Docker
- Docker 是一個開源的應用容器引擎,基于 Go 語言 并遵從 Apache2.0 協(xié)議開源。
- Docker 可以讓開發(fā)者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發(fā)布到任何流行的 Linux 機器上,也可以實現(xiàn)虛擬化。
- 容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app)
2.Docker的應用場景
- 使用Docker容器開發(fā)、測試、部署服務
- 創(chuàng)建隔離的運行環(huán)境、搭建測試環(huán)境
- 構建多用戶的平臺即服務(PaaS)基礎設施
- 提供軟件即服務(SaaS)應用程序
- 高性能、超大規(guī)模的宿主機部署
3.Docker的優(yōu)點
- 快速,一致地交付應用程序
Docker 允許開發(fā)人員使用您提供的應用程序或服務的本地容器在標準化環(huán)境中工作,從而簡化了開發(fā)的生命周期。
容器非常適合持續(xù)集成和持續(xù)交付(CI / CD)工作流程,如以下場景:
開發(fā)人員在本地編寫代碼,并使用 Docker 容器與同事共享他們的工作。
他們使用 Docker 將其應用程序推送到測試環(huán)境中,并執(zhí)行自動或手動測試。
當開發(fā)人員發(fā)現(xiàn)錯誤時,他們可以在開發(fā)環(huán)境中對其進行修復,然后將其重新部署到測試環(huán)境中,以進行測試和驗證。
測試完成后,將修補程序推送給生產環(huán)境,就像將更新的鏡像推送到生產環(huán)境一樣簡單。
- 響應式部署和擴展
Docker 是基于容器的平臺,允許高度可移植的工作負載。Docker 容器可以在開發(fā)人員的本機上,數據中心的物理或虛擬機上,云服務上或混合環(huán)境中運行。
Docker 的可移植性和輕量級的特性,還可以輕松地完成動態(tài)管理的工作負擔,并根據業(yè)務需求指示,實時擴展或拆除應用程序和服務。
- 在同一硬件上運行更多工作負載
Docker 輕巧快速。它為基于虛擬機管理程序的虛擬機提供了可行、經濟、高效的替代方案,因此可以利用更多的計算能力來實現(xiàn)業(yè)務目標。Docker 非常適合于高密度環(huán)境以及中小型部署,可以用更少的資源做更多的事情。
4.Docker的目標
- 提供簡單輕量的建模方式
- 實現(xiàn)職責的邏輯分離
- 快速高效的開發(fā)生命周期
- 鼓勵使用面向服務的架構
5.Docker的架構
Docker 包括三個基本概念:
- 鏡像(Image):Docker 鏡像(Image),就相當于是一個 root 文件系統(tǒng)。比如官方鏡像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系統(tǒng)的 root 文件系統(tǒng)。
- 容器(Container):鏡像(Image)和容器(Container)的關系,就像是面向對象程序設計中的類和實例一樣,鏡像是靜態(tài)的定義,容器是鏡像運行時的實體。容器可以被創(chuàng)建、啟動、停止、刪除、暫停等。
- 倉庫(Repository):倉庫可看著一個代碼控制中心,用來保存鏡像。
Docker 使用客戶端-服務器 (C/S) 架構模式,使用遠程API來管理和創(chuàng)建Docker容器。
Docker 容器通過 Docker 鏡像來創(chuàng)建。
容器與鏡像的關系類似于面向對象編程中的對象與類。