為什麼要使用Docker和容器

2021-10-06 09:09:17 字數 2966 閱讀 4886

2023年出版的一本書名為《 給樹上釘指甲》 ,將軟體描述為「模糊且難以牢牢抓住」。 2023年就是如此,距今已有近40年的歷史。 軟體,無論是您購買的應用程式,還是您自己構建的應用程式,仍然難以部署,難以管理且難以執行。

docker容器提供了一種掌握軟體的方法。 您可以使用docker來包裝應用程式,以解決其部署和執行時問題(如何在網路上公開它,如何管理其對儲存和記憶體和i / o的使用,如何控制訪問許可權)。在應用程式本身之外,並且在所有「容器化」應用程式中保持一致。 您可以在安裝了docker執行時的任何與os相容的主機(linux或windows)上執行docker容器。

[ 什麼是docker?docker容器解釋了 。||檢視我們的docker教程: docker入門 。• 開始使用docker群模式 。• 開始使用docker compose 。• 開始使用docker卷 。• 開始使用docker網路 。]

除了這種方便的封裝,隔離,可移植性和控制性之外,docker還提供了許多其他好處。 docker容器很小(兆位元組)。 他們立即開始。 它們具有用於版本控制和元件重用的內建機制。 可以通過公共docker hub或私有儲存庫輕鬆共享它們。

在本文中,我將**docker容器如何使構建和部署軟體變得更加容易-容器要解決的問題,它們如何解決,何時才是問題的正確答案,何時不是問題的正確答案。

多年來,企業軟體通常已部署在「裸機」上(即安裝在對底層硬體具有完全控制權的作業系統上)或虛擬機器(即安裝在共享底層硬體的作業系統上)與其他「訪客」作業系統)。 自然地,在裸機上進行安裝使該軟體難以移動和難以更新,這兩個難題使it部門很難靈活地響應業務需求的變化。

然後虛擬化出現了。 虛擬化平台(也稱為「管理程式」)允許多個虛擬機器共享乙個物理系統,每個虛擬機器以隔離的方式模擬整個系統的行為,並具有自己的作業系統,儲存和i / o。 。 現在,it可以更有效地響應業務需求的變化,因為可以轉殖,複製,遷移vm,並向上或向下旋轉vm,以滿足需求或節省資源。

虛擬機器還有助於降低成本,因為可以將更多的vm整合到更少的物理機上。 可以將執行舊版應用程式的舊系統轉換為vm,並進行物理退役以節省更多資金。

但是虛擬機器仍然有很多問題。 虛擬機器很大(千兆位元組),每個虛擬機器包含乙個完整的作業系統。 只能將這麼多虛擬化應用程式整合到乙個系統中。 設定vm仍需要花費大量時間。 最後,虛擬機器的可移植性受到限制。 在特定的時間點之後,vm無法提供快速發展的業務所要求的那種速度,敏捷性和節省。

容器的工作原理類似於虛擬機器,但是方式更加具體和精細。 他們將單個應用程式及其依賴關係(該應用程式需要執行的所有外部軟體庫)與基礎作業系統和其他容器隔離。 所有容器化的應用程式共享乙個通用的作業系統(linux或windows),但是它們彼此隔離,並且與整個系統隔離。

docker容器的好處在很多地方都可以看到。 以下是docker和容器的一些主要優點:

容器化應用程式例項使用的記憶體遠少於虛擬機器,它們啟動和停止的速度更快,並且可以更密集地打包在其主機硬體上。 所有這些都減少了it支出。

節省的成本將取決於正在執行的應用程式以及它們可能占用的資源,但容器的工作效率始終高於vm。 還可以節省軟體許可證的成本,因為您需要更少的作業系統例項來執行相同的工作負載。

企業軟體必須快速響應不斷變化的狀況。 這意味著既可以輕鬆擴充套件以滿足需求,又可以輕鬆更新以根據業務需求新增新功能。

借助docker容器,可以輕鬆地將具有新業務功能的新版本軟體快速投入生產,並在需要時快速回滾到以前的版本。 它們還使實施藍色/綠色部署等策略變得更加容易。

執行企業應用程式的位置很重要-在防火牆後面,目的是使事物靠近並保持安全; 或在公共雲中發布,以方便公眾訪問和資源的高彈性。 由於docker容器封裝了應用程式需要執行的所有內容(以及僅這些內容),因此它們使應用程式可以輕鬆地在環境之間穿梭。 任何安裝了docker執行時的主機(無論是開發人員的膝上型電腦還是公共雲例項)都可以執行docker容器。

輕巧,可移植且自包含的docker容器使按照前瞻性思路構建軟體變得更加容易,因此您不必嘗試用昨天的開發方法來解決明天的問題。

微服務是使軟體模式容器更容易使用的一種,微服務是由許多鬆散耦合的元件構成的應用程式。 通過將傳統的「整體」應用程式分解成單獨的服務,微服務允許業務線應用程式的不同部分分別由單獨的團隊和不同的時間表進行縮放,修改和服務(如果適合)。商業。

不需要容器來實現微服務,但是它們非常適合於微服務方法和一般的敏捷開發過程。

關於容器,要記住的第一件事是適用於任何軟體技術的相同建議:這不是靈丹妙藥。 docker容器本身並不能解決所有問題。 特別是:

預設情況下,容器中的軟體可以比在裸機上執行的軟體更安全,但這就像說,門被鎖的房屋比門被鎖的房屋更安全。 它沒有說明鄰里的狀況,吸引小偷的貴重物品的可見存在,居住在那裡的人們的日常活動等等。 容器可以為應用程式增加一層安全性,但只能作為在上下文中保護應用程式的常規程式的一部分。

如果將現有應用容器化,則可以減少其資源消耗並使其易於部署。 但這不會自動更改應用程式的設計或與其他應用程式互動的方式。 這些好處僅是通過開發人員的時間和精力而獲得的,而不僅僅是將所有內容移入容器的命令。

將老式的整體式或soa風格的應用程式放入容器中,最終,您會得到乙個舊的應用程式放入容器中。 這對您的工作沒有任何幫助。 如果有的話,可能會使它的用處不大。

容器的乙個長期存在的神話是,它們使虛擬機器過時了。 即用於在虛擬機器上執行許多應用程式可以移動到乙個容器,但是,這並不意味著所有的人都能夠或應該。 例如,如果您所在的行業對法規要求很高,則可能無法為虛擬機器交換容器,因為虛擬機器比容器提供更多的隔離性。

企業開發工作臭名昭著,反應遲鈍。 企業開發人員總是無時無刻不在面對這樣的約束,即it施加的約束,整個企業對它們的要求。 docker和容器為開發人員提供了更多他們渴望的自由,同時提供了構建可快速響應不斷變化的業務條件的業務應用程式的方法。

from:

為什麼要使用docker?

1 快速交付應用程式 開發者使用乙個標準的 image 來構建開發容器,開發完成之後,系統管理就可以使用這個容器來部署 docker 可以快速建立容器,快速迭代應用程式,並讓整個過程可見,使團隊中的其他成員更容易理解應用程式是如何建立和工作的。docker 容器很輕!很快!容器的啟動時間是次秒級的,...

為什麼要使用Docker

作為一種新興的虛擬化方式,docker 跟傳統的虛擬化方式相比具有眾多的優勢。由於容器不需要進行硬體虛擬以及執行完整作業系統等額外開銷,docker 對系統資源的利用率更高。無論是應用執行速度 記憶體損耗或者檔案儲存速度,都要比傳統虛擬機器技術更高效。因此,相比虛擬機器技術,乙個相同配置的主機,往往...

為什麼要使用docker

1.為什麼要使用docker docker容器虛擬化的好處 docker專案的發起人和docker inc.的cto solomon hykes認為,docker在正確的地點 正確的時間順應了正確的趨勢 即高效地構建應用。現在開發者需要能方便地建立執行在雲平台上的應用,也就是說應用必須能夠脫離底層機...