1.什么是Docker
- Docker 是一個開源的應(yīng)用容器引擎姥敛,基于 Go 語言 并遵從 Apache2.0 協(xié)議開源虫蝶。
- Docker 可以讓開發(fā)者打包他們的應(yīng)用以及依賴包到一個輕量級奠伪、可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上劫狠,也可以實現(xiàn)虛擬化狰域。
- 容器是完全使用沙箱機(jī)制邦蜜,相互之間不會有任何接口(類似 iPhone 的 app)
2.Docker的應(yīng)用場景
- 使用Docker容器開發(fā)依鸥、測試、部署服務(wù)
- 創(chuàng)建隔離的運行環(huán)境悼沈、搭建測試環(huán)境
- 構(gòu)建多用戶的平臺即服務(wù)(PaaS)基礎(chǔ)設(shè)施
- 提供軟件即服務(wù)(SaaS)應(yīng)用程序
- 高性能贱迟、超大規(guī)模的宿主機(jī)部署
3.Docker的優(yōu)點
- 快速,一致地交付應(yīng)用程序
Docker 允許開發(fā)人員使用您提供的應(yīng)用程序或服務(wù)的本地容器在標(biāo)準(zhǔn)化環(huán)境中工作絮供,從而簡化了開發(fā)的生命周期衣吠。
容器非常適合持續(xù)集成和持續(xù)交付(CI / CD)工作流程,如以下場景:
開發(fā)人員在本地編寫代碼壤靶,并使用 Docker 容器與同事共享他們的工作缚俏。
他們使用 Docker 將其應(yīng)用程序推送到測試環(huán)境中,并執(zhí)行自動或手動測試贮乳。
當(dāng)開發(fā)人員發(fā)現(xiàn)錯誤時忧换,他們可以在開發(fā)環(huán)境中對其進(jìn)行修復(fù),然后將其重新部署到測試環(huán)境中向拆,以進(jìn)行測試和驗證亚茬。
測試完成后,將修補程序推送給生產(chǎn)環(huán)境浓恳,就像將更新的鏡像推送到生產(chǎn)環(huán)境一樣簡單刹缝。
- 響應(yīng)式部署和擴(kuò)展
Docker 是基于容器的平臺,允許高度可移植的工作負(fù)載颈将。Docker 容器可以在開發(fā)人員的本機(jī)上梢夯,數(shù)據(jù)中心的物理或虛擬機(jī)上,云服務(wù)上或混合環(huán)境中運行吆鹤。
Docker 的可移植性和輕量級的特性厨疙,還可以輕松地完成動態(tài)管理的工作負(fù)擔(dān),并根據(jù)業(yè)務(wù)需求指示,實時擴(kuò)展或拆除應(yīng)用程序和服務(wù)沾凄。
- 在同一硬件上運行更多工作負(fù)載
Docker 輕巧快速梗醇。它為基于虛擬機(jī)管理程序的虛擬機(jī)提供了可行、經(jīng)濟(jì)撒蟀、高效的替代方案叙谨,因此可以利用更多的計算能力來實現(xiàn)業(yè)務(wù)目標(biāo)。Docker 非常適合于高密度環(huán)境以及中小型部署保屯,可以用更少的資源做更多的事情手负。
4.Docker的目標(biāo)
- 提供簡單輕量的建模方式
- 實現(xiàn)職責(zé)的邏輯分離
- 快速高效的開發(fā)生命周期
- 鼓勵使用面向服務(wù)的架構(gòu)
5.Docker的架構(gòu)
Docker 包括三個基本概念:
- 鏡像(Image):Docker 鏡像(Image),就相當(dāng)于是一個 root 文件系統(tǒng)姑尺。比如官方鏡像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系統(tǒng)的 root 文件系統(tǒng)竟终。
- 容器(Container):鏡像(Image)和容器(Container)的關(guān)系,就像是面向?qū)ο蟪绦蛟O(shè)計中的類和實例一樣切蟋,鏡像是靜態(tài)的定義统捶,容器是鏡像運行時的實體。容器可以被創(chuàng)建柄粹、啟動喘鸟、停止、刪除驻右、暫停等什黑。
- 倉庫(Repository):倉庫可看著一個代碼控制中心,用來保存鏡像堪夭。
Docker 使用客戶端-服務(wù)器 (C/S) 架構(gòu)模式愕把,使用遠(yuǎn)程API來管理和創(chuàng)建Docker容器。
Docker 容器通過 Docker 鏡像來創(chuàng)建森爽。
容器與鏡像的關(guān)系類似于面向?qū)ο缶幊讨械膶ο笈c類礼华。
相關(guān)鏈接:
Docker 官網(wǎng)
Github Docker 源碼
菜鳥教程-Docker教程