你的容器化學習第一課
說到容器,大家第一反應就是Docker。由此可見Docker的第一要務就是容器的執行和管理。
容器的英文名叫做“Container”,最直白的翻譯其實應該是“集裝箱”。Docker Logo裡的這隻揹著集裝箱的藍鯨是不是特別生動?
那麼Docker容器有哪些特點呢?
- Docker集裝箱尺寸千變萬化:小到襪子、手帕(helloworld),大到汽車、房間(LAMP應用叢集),都可打包放入集裝箱。Docker集裝箱可謂包羅永珍、無所不能。
- Docker集裝箱外觀保持一致:它是個標準的長方體,不帶門窗、不含陽臺。
它是這樣:
而不是這樣:
它沒有個性,卻可以有很好的適配性和相容性。它是個標準化產品,只要還有空間(CPU、記憶體),Docker集裝箱可以輕鬆塞入輪船、汽車、火車、飛機(伺服器、虛擬機器、叢集、IaaS雲)裡。 - 每個Docker集裝箱的尺寸上限是固定的:它可以透過繼承自老祖宗LXC的cgroup功能,來限制每個容器的CPU、記憶體和IO資源,防止個別集裝箱浪費飛機、輪船的寶貴儲存空間。
- Docker集裝箱間還互相隔離:源自於Linux的namespace功能,很方便地實現了集裝箱的程式、訊號、使用者、網路、檔案系統等的隔離。單個集裝箱內部的故障和問題,不會影響其他集裝箱和承載集裝箱的飛機、輪船。
好了,一直叫“集裝箱”總感覺逼格有點低,那我們還是切換回“容器”的叫法吧。
Docker在LXC的基礎上真正將容器技術發揚光大。它完成了前輩容器技術沒有實現的幾個關鍵技術難點:
圖片來自docker.com,圖片版權歸屬原作者
- 方便的客戶端管理:透過Docker客戶端(命令列、API等),它可以方便地進行容器的準備和部署。後續的Docker容器實戰,大家可以看到,幾條命令就可以迅速完成複雜應用的準備和部署。
- 強大的伺服器端引擎:Docker支援OCI(Open Container Initiative)組織的規範,提供了一套runc的容器執行環境,滿足了上面提到的集裝箱主流特點,並且透過Docker engine這個後臺daemon完成了容器界的人機互動和自動化服務管理。
- 便利的映象技術:對於開發團隊而言,動態的Java應用服務來自於靜態的jar/war包和軟體程式碼;對於運維團隊而言,動態的VMware虛擬機器環境來自於靜態的OVA/OVF模版。當實踐來到Devops環境,動態的應用容器又如何實現敏捷地配置調整和彈性地反覆釋出呢?Docker給出了它的答案:容器映象(Docker Image)。後續的映象製作和管理章節會詳細闡述基於Docker Commit和Dockerfile兩種技術的手段,使用者可以基於此方便進行映象的修改、版本控制和快速釋出。映象的管理和釋出方式,正是Docker相對於前輩LXC的最大優勢之一。
- 無敵的映象倉庫(Registry):Docker透過其龐大的生態圈,提供了除Docker Hub官方倉庫之外的大量映象倉庫。同時使用者還可以很方便地在本地搭建自己的私有倉庫。倉庫化的映象管理,極大地方便了容器的準備和分享。以Docker Hub官方庫為例,當今最熱門的幾大映象repo都聚粉無數:
- 龐大的生態系統:當前各大主流作業系統(Linux、Windows、MacOS)、硬體平臺和雲平臺都對Docker進行了支援。並且Docker具有最龐大的容器編排、資源排程開源夥伴群體,擁有最完善的監控、繼承、管理工具集。
圖片來自DockerCon歐洲,圖片版權歸屬原作者
從2017年開始,Docker逐步從開源版本發展成免費的社群版和收費的企業版兩大分支:
- Docker CE(Docker Community Edition):包含了Docker原生的大部分功能,可以滿足多數企業的功能性需求。
- Docker EE(Docker Enterprise Edition):除了社群版的功能外,追加了具有集中管理功能的Docker Datacenter和大量的安全增強元件,適合對於管控和安全有較高要求的公司。
圖片來自bretfisher.com,圖片版權歸屬原作者
在本篇文章中,我們學習了Docker容器的基本特點和Docker技術特有的技術優勢。更多精彩內容,歡迎關注課程:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1868/viewspace-2824130/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Docker 第一課 - 構建你的容器Docker
- JavaScript 學習初篇(第一課)JavaScript
- 10步學習Perl 第一課
- B站excel學習第一課入門Excel
- 學習你的第一門程式語言
- 菜鳥學習SHELL第一課---地址本的指令碼(轉)指令碼
- 你應該學習的第一門程式語言
- 機器學習、深度學習、強化學習課程超級大列表!機器學習深度學習強化學習
- Docker 容器學習Docker
- 深度強化學習入門:用TensorFlow構建你的第一個遊戲AI強化學習遊戲AI
- 零基礎學習Python__小甲魚第一課筆記與課後練習Python筆記
- 雲端計算學習路線圖課件:學Docker容器怎樣快速入門?Docker
- 雲端計算教程學習入門影片課件:虛擬化技術和容器技術詳解
- 10.15 見習後的第一節課
- 理清定位,找準你的 Kubernetes 與容器技術學習方法
- java第一次正式課程課後習題Java
- 強化學習理論-第1課-基礎概念強化學習
- Java進階容器學習Java
- Java 容器學習之 HashMapJavaHashMap
- Docker容器學習梳理 - SSH方式登陸容器Docker
- Docker容器學習梳理 - 容器硬碟熱擴容Docker硬碟
- 第一課 以太坊開發從入門到精通學習導航
- 雲端計算進階學習路線圖課件:Docker容器的四種網路模式Docker模式
- Web 開發學習筆記(1) — 搭建你的第一個 Web ServerWeb筆記Server
- 雲端計算學習路線圖素材課件:Docker容器應用場景分析Docker
- 如何使用Docker容器化改善你的開發流程Docker
- 視覺化學習的第一天:瞭解Matplotlib視覺化
- golang學習第二課Golang
- Docker容器學習梳理 - 應用程式容器環境部署Docker
- 第一個JavaScript的例子學習JavaScript
- Open SAP 上 SAP Fiori Elements 公開課第一單元學習筆記筆記
- Docker容器學習與分享12Docker
- 【java學習之容器總結】Java
- 想要學習web前端需要學習那些課程Web前端
- 容器Docker學習系列五~命令學習history,save,importDockerImport
- 容器Docker學習系列五~命令學習history,save, importDockerImport
- 強化學習在美團“猜你喜歡”的實踐強化學習
- 強化學習在美團「猜你喜歡」的實踐強化學習