docker是容器嗎

docker不是容器;容器是打包代碼及其所有依賴的軟件的標準單元,用于開發、交付和部署,使應用可以從一個環境快速可靠地運行到另一個環境,而docker則是容器技術的一種實現,是一個開源的應用容器引擎,是用來管理容器的。

docker是容器嗎

本教程操作環境:linux7.3系統、docker19.03版、Dell G3電腦。

docker不是容器

Docker和容器的關系

現在一說到容器,第一時間就會想到Docker,但是容器并不等同于Docker,Docker只是容器技術的一種實現,用來管理容器,就像VMware是虛擬機的一種實現一樣,除了Docker,還有LXC/LXD、rkt等容器技術實現,只是Docker最為出名。

什么是容器

Docker官方對容器的解釋,一句話概括,容器(Container)就是將軟件打包成標準化單元,以用于開發、交付和部署。容器是打包代碼及其所有依賴的軟件的標準單元,使應用可以從一個環境快速可靠地運行到另一個環境。容器鏡像是輕量的、可執行的獨立軟件包 ,包含軟件運行所需的所有內容:代碼、運行時環境、系統工具、系統庫和設置。容器化軟件適用于基于Linux和windows的應用,在任何環境中都能夠始終如一地運行。容器賦予了軟件獨立性,將其與環境隔離開來,確保在例如開發和預演環境這種存在差異的環境中統一地運行。

容器也是一種用于打包應用(已編譯)代碼以及運行時所需依賴的技術。運行的每個容器可以重復,通過包含依賴項實現標準化意味著在任何環境運行容器都可以得到相同的行為。容器將應用與主機基礎結構分離,使其在不同的云和操作系統環境部署更加容易。容器是不可變的,無法更改已運行容器的代碼。如果一個容器化應用需要更改,則需要構建一個包含更改的新容器,從更新的鏡像從新創建容器。

容器技術實質上是對系統資源的隔離和控制,使容器進程運行于屬于自己的獨立的命名空間Namespace)。容器可以擁有自己的文件系統、網絡配置、進程空間等,容器內的進程是運行在一個隔離的環境里,使用起來就好像是在一個獨立于宿主的系統下操作一樣,也使得容器可以很方便的在任何地方運行。

容器的優點

容器的主要優點概括如下:

  • 使用簡單高效:與虛擬機鏡像相比,容器鏡像更易用、更高效。容器體積小啟動快,不需要與外部的基礎架構環境綁定,完美解決從開發到生產環境的一致性問題。

  • 監測與管理:容器比虛擬機更加透明,有助于監測與管理。尤其是容器進程的生命周期由基礎設施管理,而不是被進程管理器隱藏在容器內部。最后,每個應用程序用容器封裝,管理容器部署就等同于管理應用程序部署。

  • 持續集成和部署:容器消除環境差異,保證應用生命周期環境一致性和標準化。開發人員使用鏡像實現標準開發環境構建,開發完成后封裝完整環境和應用鏡像,測試運維人員可以直接部署鏡像進行測試和發布,簡化了持續集成、測試和發布過程。

  • 環境標準化與版本控制:基于容器提供的環境一致性和標準化,可以對容器鏡像進行版本控制,即能夠對整個運行環境進行版本控制,提供可靠與頻繁的容器鏡像構建、部署和快速簡便的回滾。

  • 資源高效利用與隔離:容器沒有管理程序的額外開銷,與底層共享操作系統,性能優良,系統負載低,在相同條件可以運行更多應用實例,可以充分利用系統資源。容器還擁有不錯的資源隔離與控制能力,可以精確地分配系統資源,保證應用之間互不影響。

  • 可觀測:不僅顯示操作系統的信息和度量,還顯示應用自身的信息和度量。

  • 云和操作系統分發可移植性:可運行在ubuntu、RHEL、 CoreOS、物理機、GKE以及其他任何地方。

  • 以應用為中心:從傳統的硬件上部署操作系統提升到操作系統中部署應用程序。

  • 松耦合、分布式、彈性伸縮和微服務:應用程序被分成更小,更獨立的模塊,并可以動態管理和部署,而不是運行在專用設備上的大型單體程序。

什么是Docker

Docker毫無疑問是從眾多容器技術中脫穎而出的佼佼者,至于Docker具體是什么,通過下面幾點總結:

Docker是一個開源容器項目,代碼在github維護,遵循apache 2.0協議并已加入Linux基金會,受到主流操作系統以及云服務提供商支持,成立推動了開放容器聯盟(OCI)。

Docker使用Google公司的go語言進行開發實現,基于Linux內核的命名空間(namespace) 、控制組(cgroup)以及OverlayFS類的union FS等技術,對進程進行封裝隔離,屬于操作系統層面的虛擬化技術。由于隔離的進程獨立于宿主和其它的隔離的進程,因此也稱其為容器。

Docker最初是基于Linux容器(LXC)實現,后來使用自己開發的libcontainer替代了LXC,然后進一步演化為使用runc和containerd。

Docker提供了高效、敏捷和輕量級的容器方案,可在容器內快速自動化部署應用,通過操作系統內核技術為容器提供資源隔離與安全保障,極大地簡化了容器創建與維護,并支持部署到本地環境和多種云平臺。換句話說,Docker為應用開發、運行和部署提供了一站式解決方案。

runc是一個Linux命令行工具,用于根據OCI容器運行時規范創建和運行容器。

containerd是一個守護程序,它管理容器生命周期,提供了在一個節點上執行容器和管理鏡像的最小功能集。

Docker的優勢

作為一種新興的虛擬化方式,Docker跟傳統的虛擬化方式相比具有眾多的優勢。具體總結如下:

  • 更高效的利用系統資源:容器不需要進行硬件虛擬以及運行完整操作系統等額外開銷,Docker對系統資源的利用率更高,需求量更小,可以實現更高的性能。一個相同配置的主機,使用容器可以比虛擬機運行更多數量的應用。

  • 更快速的啟動時間:Docker容器應用可以做到秒級、甚至毫秒級的啟動時間。大大的節約了開發、測試、部署的時間。

  • 一致的運行環境:Docker鏡像提供了除內核外完整的運行時環境,確保了應用運行環境一致性,從而不會再出現同樣的代碼換個環境就無法運行這類問題。

  • 持續交付和部署:使用Docker可以通過定制應用鏡像來實現持續集成、持續交付、部署。開發人員通過Dockerfile構建鏡像并結合持續集成系統進行集成測試,運維人員可以直接在生產環境中快速部署該鏡像,甚至結合持續部署系統進行自動部署。

  • 更輕松的遷移:Docker確保了執行環境的一致性,使得應用在不同平臺之間的遷移更加容易,而不用擔心運行環境的變化導致應用無法正常運行的情況。

  • 更輕松的維護和擴展:Docker使用的分層存儲以及鏡像的技術,使得應用重復部分的復用更為容易,也使得應用的維護更新更加簡單,基于基礎鏡像進一步擴展鏡像也變得非常簡單。Docker還維護了一大批高質量官方鏡像,進一步降低了應用服務的鏡像制作成本。

  • 良好的隔離性:Docker為容器提供了可靠的資源隔離與安全保障,使容器精確地分配系統資源,保證應用之間互不影響。

  • 彈性伸縮:善于處理集中爆發的服務器使用壓力,動態的管理應用。

推薦學習:《docker視頻教程

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享