你的容器化學習第一課

germo發表於2021-09-09

說到容器,大家第一反應就是Docker。由此可見Docker的第一要務就是容器的執行和管理。
容器的英文名叫做“Container”,最直白的翻譯其實應該是“集裝箱”。Docker Logo裡的這隻揹著集裝箱的藍鯨是不是特別生動?
圖片描述
那麼Docker容器有哪些特點呢?

  1. Docker集裝箱尺寸千變萬化:小到襪子、手帕(helloworld),大到汽車、房間(LAMP應用叢集),都可打包放入集裝箱。Docker集裝箱可謂包羅永珍、無所不能。
  2. Docker集裝箱外觀保持一致:它是個標準的長方體,不帶門窗、不含陽臺。
    它是這樣:
    圖片描述
    而不是這樣:
    圖片描述
    它沒有個性,卻可以有很好的適配性和相容性。它是個標準化產品,只要還有空間(CPU、記憶體),Docker集裝箱可以輕鬆塞入輪船、汽車、火車、飛機(伺服器、虛擬機器、叢集、IaaS雲)裡。
  3. 每個Docker集裝箱的尺寸上限是固定的:它可以透過繼承自老祖宗LXC的cgroup功能,來限制每個容器的CPU、記憶體和IO資源,防止個別集裝箱浪費飛機、輪船的寶貴儲存空間。
  4. Docker集裝箱間還互相隔離:源自於Linux的namespace功能,很方便地實現了集裝箱的程式、訊號、使用者、網路、檔案系統等的隔離。單個集裝箱內部的故障和問題,不會影響其他集裝箱和承載集裝箱的飛機、輪船。

好了,一直叫“集裝箱”總感覺逼格有點低,那我們還是切換回“容器”的叫法吧。
Docker在LXC的基礎上真正將容器技術發揚光大。它完成了前輩容器技術沒有實現的幾個關鍵技術難點:
圖片描述
圖片來自docker.com,圖片版權歸屬原作者

  1. 方便的客戶端管理:透過Docker客戶端(命令列、API等),它可以方便地進行容器的準備和部署。後續的Docker容器實戰,大家可以看到,幾條命令就可以迅速完成複雜應用的準備和部署。
  2. 強大的伺服器端引擎:Docker支援OCI(Open Container Initiative)組織的規範,提供了一套runc的容器執行環境,滿足了上面提到的集裝箱主流特點,並且透過Docker engine這個後臺daemon完成了容器界的人機互動和自動化服務管理。
  3. 便利的映象技術:對於開發團隊而言,動態的Java應用服務來自於靜態的jar/war包和軟體程式碼;對於運維團隊而言,動態的VMware虛擬機器環境來自於靜態的OVA/OVF模版。當實踐來到Devops環境,動態的應用容器又如何實現敏捷地配置調整和彈性地反覆釋出呢?Docker給出了它的答案:容器映象(Docker Image)。後續的映象製作和管理章節會詳細闡述基於Docker Commit和Dockerfile兩種技術的手段,使用者可以基於此方便進行映象的修改、版本控制和快速釋出。映象的管理和釋出方式,正是Docker相對於前輩LXC的最大優勢之一。
  4. 無敵的映象倉庫(Registry):Docker透過其龐大的生態圈,提供了除Docker Hub官方倉庫之外的大量映象倉庫。同時使用者還可以很方便地在本地搭建自己的私有倉庫。倉庫化的映象管理,極大地方便了容器的準備和分享。以Docker Hub官方庫為例,當今最熱門的幾大映象repo都聚粉無數:
    圖片描述
  5. 龐大的生態系統:當前各大主流作業系統(Linux、Windows、MacOS)、硬體平臺和雲平臺都對Docker進行了支援。並且Docker具有最龐大的容器編排、資源排程開源夥伴群體,擁有最完善的監控、繼承、管理工具集。
    圖片描述
    圖片來自DockerCon歐洲,圖片版權歸屬原作者

從2017年開始,Docker逐步從開源版本發展成免費的社群版和收費的企業版兩大分支:

  1. Docker CE(Docker Community Edition):包含了Docker原生的大部分功能,可以滿足多數企業的功能性需求。
  2. Docker EE(Docker Enterprise Edition):除了社群版的功能外,追加了具有集中管理功能的Docker Datacenter和大量的安全增強元件,適合對於管控和安全有較高要求的公司。
    圖片描述
    圖片來自bretfisher.com,圖片版權歸屬原作者

在本篇文章中,我們學習了Docker容器的基本特點和Docker技術特有的技術優勢。更多精彩內容,歡迎關注課程:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1868/viewspace-2824130/,如需轉載,請註明出處,否則將追究法律責任。

相關文章