每天學一點Docker(4)-深入了解容器概念
什麽是容器?
容器是一個自包含,可移植,輕量級的軟件打包技術。是應用程序在任何地方幾乎以相同方式運行。開發人員在開發機上創建好容器,無需任何修改就能在虛擬機,雲服務器或公有雲主機上運行。
容器與虛擬機
容器有兩部分組成:
1.應用程序本身
2.應用程序所依賴的環境,庫
容器在主機中運行,與操作系統中其他的進程隔離,這一點區別於虛擬機。
傳統的虛擬機技術,如:vmvare,他是創建一個完整的虛擬機,為了運行應用程序,部署系統,還需要安裝整個操作系統(幾十GB),
下圖展示了兩者的區別:
從右圖中可以看見,所有容器都共享一個系統,對於虛擬機來說,都是一個單獨的系統。
啟動容器不需要啟動整個系統,所以容器部署和啟動速度更快,開銷更小,也更容易遷移。
為什麽要使用容器技術?
因為方便。這取決於容器使得軟件具備超強的可移植能力。
現如今軟件開發的部署相對於以前來說,要復雜很多,開發人員需要使用多種服務構建和組裝應用,而且系統還可能會部署到不同的環境中。
而且這個服務都有自己依賴的庫和環境,還有可能存在著動態遷移到不同的環境中。
大家做過軟件開發的都知道,軟件部署是一件很麻煩的事情,那麽有沒有一種技術使得軟件部署很平滑呢?
開發人員受到了集裝箱的啟發。
以前運送貨物,會擔心貨物類型不同而擔心損失,比如運送的食物被其他貨物壓壞了。後來人們發明了集裝箱,標準集裝箱可以被高效地裝卸、重疊和長途運輸。現代化的起重機可以自動在卡車、輪船和火車之間移動集裝箱。集裝箱被譽為運輸業與世界貿易最重要的發明。
Docker 將集裝箱思想運用到軟件打包上,為代碼提供了一個基於容器的標準化運輸系統。Docker 可以將任何應用及其依賴打包成一個輕量級、可移植、自包含的容器。容器可以運行在幾乎所有的操作系統上。
容器意味著環境隔離和可重復性。開發人員只需為應用創建一次運行環境,然後打包成容器便可在其他機器上運行。另外,容器環境與所在的 Host 環境是隔離的,就像虛擬機一樣,但更快更簡單。
每天學一點Docker(4)-深入了解容器概念