純乾貨:21天帶你玩轉容器
可能有些人已經使用過容器,但考慮知識體系的完整性,我們還是從最基本的容器知識開始帶大家進入容器的世界。
首先介紹一下什麼是容器? Docker是一種輕量級的作業系統虛擬化解決方案,它想達到一次構建到處執行,類似於Java虛擬機器的效果,它最初誕生於2013年,是基於go語言的實現,最初是由dotCloud公司的內部一個業餘專案,後來專案開源加入了Linux基金會,然後現在程式碼在github上進行維護,有興趣的同學可以下載下來讀原始碼,這樣會對於大家對Docker的原理的理解會有很大的幫助。Docker的基礎是基於Linux容器技術,在Linux容器技術的基礎上,Docker進行了進一步的封裝,讓大家不去關心容器的管理,使得操作更加便捷。使用者操作Docker容器,就像操作一個快速輕量級的虛擬機器那樣簡單。
從結構上來看,容器和虛擬機器還是有很大不同的。左圖的虛擬機器的 Guest層,還有Hypervisor層在Docker上已經被Docker Engine層所取代,在這裡我們需要知道,Guest OS 是虛擬機器安裝的作業系統,是一個完整的系統核心,另外Hypervisor可以理解為硬體虛擬化平臺,它在後Host OS以核心驅動的形式存在。虛擬機器實現資源的隔離的方式是利用獨立的Guest OS,以及利用Hypervisor虛擬化CPU、記憶體、IO等裝置來實現的,對於虛擬機器實現資源和環境隔離的方案,Docker顯然簡單很多。然後Docker並沒有和虛擬機器一樣利用一個獨立的Guest OS執行環境的隔離,它利用的是目前當前Linux核心本身支援的容器方式,實現了資源和環境的隔離,簡單來說,Docker就是利用 Name space 實現了系統環境的隔離,利用了cgroup實現了資源的限制,利用映象例項實現跟環境的隔離。由此可見,Docker有著比虛擬機器更少的抽象層。由於Docker不需要Hypervisor實現硬體資源的虛擬化,所以執行在Docker容器上的程式,直接使用的都是實際物理機的硬體資源。因此在cpu、記憶體、利用率上,Docker將會在效率上具有更大的優勢。此外,Docker直接利用虛擬機器機的系統核心,避免了虛擬機器啟動時所需要的系統引導時間和作業系統執行的資源消耗,利用Docker能夠在幾秒鐘之內啟動大量的容器,是虛擬機器無法辦到的。快速啟動低資源消耗的優點,使Docker在彈性雲平臺自動運維繫統方面具有很好的應用場景。與虛擬機器相比,Docker在以下幾個方面具有很大的優勢,它能夠快速的交付和部署,Docker在整個開發週期都可以完美輔助你實現快速交付,Docker允許開發者本地應用,直接進入到可持續的開發流程中。例如開發者可以使用一個標準映象構建一套開發容器,開發完成之後,運維人員可以直接使用這個容器來部署程式碼,Docker可以快速建立容器快速迭代應用程式,整個過程全程可見,使團隊中的其他成員更容易理解應用程式是如何建立和工作的。此外,容器的啟動時間是秒級的,大量節約開發、測試、部署的時間。還有一個非常關鍵的點,就是Docker能夠高效地部署和擴容,Docker容器幾乎可以在任意平臺上執行,包括虛擬機器、物理機、公有云、私有云、個人電腦、伺服器等,這種相容性,可以讓使用者把一個應用程式從一個平臺直接遷移到另外一個平臺。Docker的相容性和輕量性的特性可以輕鬆的實現負載的動態管理,你可以快速擴容或方便的下線你的應用和服務,這種速度趨近於實時!此外Docker還具有更高的資源利用率,一臺主機上可以執行數千個Docker容器,容器除了執行其應用之外,基本不消耗額外的系統資源,使得應用效能高,系統開銷小,而傳統的虛擬機器方式則需要執行不同的應用,耗費大量的資源,此外Docker還可以有更簡單的管理使用Docker只需要小小的修改就可以替代以往大量的更新工作,所有的修改都以增量的方式被分發和更新,從而實現自動化並且高效的管理!
容器基礎知識已掌握,想要學習得更深入?華為雲 DevCloud &雲容器服務聯合重磅出品——21天轉型容器實戰營!依託華為云云容器服務,帶領開發者學習和體驗Docker, kubernetes, Istio等大熱技術!匯聚華為雲容器技術尖端專家,結合CKA認證精編21天課程,理論和實踐雙管齊下,助力開發者打通容器任督二脈,挑戰21天,拿下CKA! 11.20-12.3限時入營,擺好學習姿勢,12.4-12.24學習實踐,闖關打卡,21天見證進步。現在進入華為雲學院( https://edu.huaweicloud.com/ )報名學習吧。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31556022/viewspace-2221010/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 乾貨 | 2分鐘玩轉ApipostAPI
- 帶你重新“玩轉”FlutterFlutter
- 純鹼,這些乾貨你應該知道QLX
- 手摸手帶你玩轉Xcode ExtensionsXCode
- CryptAssist-帶你玩轉幣圈
- 手把手帶你玩轉LinuxLinux
- React Native純乾貨總結React Native
- Spring Security 實戰乾貨:玩轉自定義登入Spring
- 乾貨 | 4步帶你完成私有云盤搭建
- 老司機帶你玩轉Radare2
- 架構師帶你玩轉分散式鎖架構分散式
- EasyNLP帶你玩轉CLIP圖文檢索
- 帶你玩轉RabbitMQ的五種佇列MQ佇列
- 超級乾貨:帶你全面瞭解低程式碼!
- 關於PaaS的純乾貨總結
- 三步帶你玩轉前端裝飾器前端
- 乾貨好文帶你理解C語言中的連結串列C語言
- 英文工科生寫作整理(1)純乾貨
- Android-圖片壓縮(二)-純乾貨Android
- 純乾貨分享 —— 大資料入門指南大資料
- 【純乾貨分享】網路安全這些專業“術語”你瞭解嗎?
- 自媒體新手怎麼入門?這些乾貨告訴你新手如何玩轉自媒體
- 帶你7天玩轉視覺化建站平臺視覺化
- 七天帶你玩轉MySQL之SQL語句MySql
- 【12月11日】真香現場,帶你玩轉 EKS!
- 程式設計師大殺器?帶你玩轉ChatGPT程式設計師ChatGPT
- 【轉】Android三種姿勢帶你玩轉360度全景圖功能Android
- 純乾貨分享: 如何在 React 框架中使用SpreadJSReact框架JS
- 純乾貨:微服務開發手冊之GRPC微服務RPC
- Spring Cloud 純乾貨,從入門到實戰SpringCloud
- 大牛帶你玩轉 CSS3 3D 技術CSSS33D
- 帶你玩轉七牛雲端儲存——高階篇
- 帶你玩轉OpenHarmony AI:打造智慧語音子系統AI
- Smartbi帶你一文玩轉波士頓矩陣矩陣
- 帶你輕鬆使用Hyperf玩轉Grpc(一)環境搭建RPC
- 玩轉docker之自定義PHP容器DockerPHP
- 帶你玩轉 Vite + Vue3 高低版本常用玩法ViteVue
- 一文帶你玩轉設計模式之「責任鏈」設計模式