你應該知道的 9 個 Docker 技術知識
用於在虛擬化容器中部署和分發應用程式的Docker開源平臺具有諸多優點。本文解釋了企業應當瞭解這項流行技術的幾個方面。
Docker容器架構
Docker容器的架構包括裝有主機作業系統的物理機器。主機作業系統上面部署了Docker引擎,引擎有助於構建用來託管執行應用程式的虛擬容器。Docker引擎構建隔離的容器,應用程式就可以部署在這些容器上面。不像典型的虛擬機器管理程式解決方案,Docker不需要為每個應用程式構建單獨的虛擬機器,也不需要為每個虛擬機器安裝來賓作業系統(guest OS)。
在基於虛擬機器管理程式的應用程式虛擬化中,虛擬化平臺(比如Hyper-V或VMware)部署在裝有主機作業系統的物理伺服器上。虛擬化平臺上構建了虛擬機器,每個虛擬機器都有獨立的來賓作業系統。應用程式部署在所有這些層上。託管執行那麼多的虛擬機器(每個虛擬機器都有獨立的來賓作業系統)讓這種架構對資源的需求量比Docker容器大得多。
容器自動化
Docker容器通常提供了內建工具,使容器配置過程實現自動化,為此它可以利用來自任何現有應用程式容器的原始碼。這需要處理服務、依賴項、封裝及更多操作。Docker還提供了一系列廣泛的預先配置的Docker映像,可以幫助企業組織快速部署應用程式容器。
為了實現同樣這一系列任務,任何虛擬機器管理程式解決方案都需要一套複雜的程式,包括將應用程式連同依賴項和工具一同克隆到隔離的程式包中。
計算資源需求
在Docker容器中,應用程式直接建立在Docker引擎上,因而不需要來賓作業系統。這項功能有助於減少託管執行多個來賓作業系統的總體系統要求(比如處理器或記憶體)。這還減少了對計算資源的需求,因而降低了部署成本。不像Docker容器,基於虛擬機器管理程式的應用程式需要額外的來賓作業系統以及應用程式實際執行所需要的其他依賴項。
程式隔離和安全
在Docker容器中,每個應用程式或容器與其他應用程式或容器隔離開來,但它們都使用同一個根(root)。這提供了簡化管理這個優點,不過也帶來了幾個缺點。比如說,萬一根受到危及,主機容器就可能面臨險境。相比之下,虛擬機器管理程式解決方案提供了多少有點全面的隔離,具體取決於需求。
Docker公司正在竭力解決Docker容器的安全問題。該公司最近與業內專家協作,並與網際網路安全中心一起釋出了部署Docker 1.6或更新版技術的安全最佳實踐。
啟動時間
容器直接建立在Docker引擎上;啟動應用程式所花的時間完全取決於應用程式的型別。底層核心已經在執行,沒有中間層作業系統(來賓作業系統)縮短了容器的啟動時間。在虛擬機器管理程式中,系統總的啟動時間包括來賓作業系統的啟動時間和應用程式的啟動時間。
應用程式交付
Docker允許在“Docker化”的容器中跨不同環境分發或交付應用程式,所有依賴項繫結為一個程式包。比如說,想把某個應用程式從開發環境遷移到測試環境,然後遷移到生產環境,整個容器就可以作為一個實體來加以封裝和遷移;應用程式仍與所有的環境配置繫結起來。這有助於跨不同部門、團隊成員之間或者通過雲來遷移應用程式,沒有導致故障的任何風險。
在虛擬機器管理程式解決方案中,封裝和遷移應用程式連同所有相關服務和工具總是有可能導致環境遭到破壞。
硬體相容性
藉助Docker容器,管理員就能構建應用程式,沒必要考慮來賓作業系統方面的任何依賴項。這使得應用程式具有輕量級、執行快、開銷低的優點,同時消除了潛在的平臺相容性問題。
在虛擬機器管理程式解決方案中,每個虛擬機器專用的來賓作業系統使得響應起來比Docker容器應用程式成本更高、速度更慢。在特定虛擬機器管理程式平臺中構建的任何虛擬機器無法在其他虛擬機器管理程式平臺上執行。
企業級功能
雖然許多企業組織已經開始使用Docker容器用於應用程式虛擬化,但這項技術仍缺少一些企業級虛擬化功能,比如細粒度訪問控制、容器遷移、日誌和備份恢復等。而大多數虛擬機器管理程式平臺支援諸如此類的企業級功能。如果企業組織在考慮將虛擬化應用程式部署到生產環境中,建議使用虛擬機器管理程式解決方案,就因為這一點:基於Docker的解決方案在提供企業級功能方面有所欠缺。
供應商
現在有許多供應商提供關於容器技術的產品和服務。從2013年起,負責Docker開源專案的商業公司Docker, Inc.,開始主導容器虛擬化的市場。最近,包括擁有LXD技術的Canonical以及擁有Rocket技術的CoreOS等其他供應商,也開始進入容器市場。
相關文章
- 初識python你應該知道的6個知識點!Python
- 100個你應該知道的java基礎知識Java
- 你應該知道的緩動知識點
- 你應該知道的HTTP基礎知識HTTP
- 你應該知道的ip地址相關知識
- docker – 你應該知道的10件事Docker
- 你應該知道的9個優秀的CSS框架CSS框架
- 8個你不可能知道的 Docker 知識Docker
- 8 個你可能不知道的 Docker 知識Docker
- 關於前端應該知道的5個小知識前端
- 那些前端應該知道的HTTP知識前端HTTP
- 回溯法應該知道的知識點
- Android —— 自定義View中,你應該知道的知識點AndroidView
- 每個開發人員都應該知道的WebSockets知識Web
- 前端工程師應該知道的yarn知識前端工程師Yarn
- 每個 Web 開發者應該知道的 jQuery i18n 知識WebjQuery
- 你需要知道這些關於技術美術的知識構成
- 每個Web開發者都應該知道的關 URL編碼的知識Web
- 設計師都應該知道的ICON知識
- 你應該知道的FlutterFlutter
- 你應該知道的RocketMQMQ
- 你應該知道的16個linux命令Linux
- 資料庫專家都應該知道的5個統計學知識資料庫
- 每個程式設計師應該知道的計算機網路知識程式設計師計算機網路
- 關於機器學習,你應該知道的3個熱門專業術語機器學習
- 關於大資料,你應該知道的75個專業術語大資料
- Laravel 你應該知道的幾個最佳實踐Laravel
- 你應該知道的JS —— 物件JS物件
- 你應該知道的jQuery技巧jQuery
- win7系統設定虛擬記憶體你應該知道的知識Win7記憶體
- 你該學點HTML/CSS知識的9大理由HTMLCSS
- 你應該使用 Django admin 的 9 個理由Django
- 你的知識死角不能否定你的技術能力
- 你應該知道Go語言的幾個優勢Go
- 關於蘋果iPhone XS Max快充,我們應該知道的五個知識點蘋果iPhone
- 你應該知道的程式集版本
- 你應該知道的Redis事務Redis
- 關於 jwt ,你應該知道的JWT