首頁  >  文章  >  運維  >  docker是容器嗎

docker是容器嗎

WBOY
WBOY原創
2022-06-17 10:32:517665瀏覽

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影片教學

以上是docker是容器嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn