什麼是容器?為什麼我們關注它?
什麼是容器?你需要它們嗎?為什麼?在這篇文章中,我們會回答這些基本問題。
但是,為了回答這些問題,我們要提出更多的問題。當你開始考慮怎麼用容器適配你的工作時,你需要弄清楚:你在哪開發應用?你在哪測試它?你在哪使用它?
你可能在你的筆記本電腦上開發應用,你的電腦上已經裝好了所需要的庫文件、擴展包、開發工具和開發框架。它在一個模擬生產環境的機器上進行測試,然後被用於生產環境。問題是這三種環境不一定都是一樣的;它們沒有同樣的工具、框架和庫。你在你機器上開發的應用不一定可以在生產環境中正常工作。
容器解決了這個問題。正如 Docker 解釋的,「容器鏡像是軟體的一個輕量的、獨立的、可執行的包,包括了執行它所需要的所有東西:代碼、運行環境、系統工具、系統庫、設置。」
這代表著,一旦一個應用被封裝成容器,那麼它所依賴的下層環境就不再重要了。它可以在任何地方運行,甚至在混合雲環境下也可以。這是容器在開發人員,執行團隊,甚至 CIO (信息主管)中變得如此流行的原因之一。
容器對開發人員的好處
現在開發人員或運維人員不再需要關注他們要使用什麼平台來運行應用。開發人員不會再說:「這在我的系統上運行得好好的。」
容器的另一個重大優勢是它的隔離性和安全性。因為容器將應用和運行平台隔離開了,應用以及它周邊的東西都會變得安全。同時,不同的團隊可以在一台設備上同時運行不同的應用——對於傳統應用來說這是不可以的。
這不是虛擬機( VM )所提供的嗎?既是,也不是。虛擬機可以隔離應用,但它負載太高了。在一份文獻中,Canonical 比較了容器和虛擬機,結果是:「容器提供了一種新的虛擬化方法,它有著和傳統虛擬機幾乎相同的資源隔離水平。但容器的負載更小,它佔用更少的內存,更為高效。這意味著可以實現高密度的虛擬化:一旦安裝,你可以在相同的硬體上運行更多應用。」另外,虛擬機啟動前需要更多的準備,而容器只需幾秒就能運行,可以瞬間啟動。
容器對應用生態的好處
現在,一個龐大的,由供應商和解決方案組成的生態系統已經可以讓公司大規模地運用容器,不管是用於編排、監控、記錄或者生命周期管理。
為了保證容器可以運行在任何地方,容器生態系統一起成立了開源容器倡議(OCI)。這是一個 Linux 基金會的項目,目標在於創建關於容器運行環境和容器鏡像格式這兩個容器核心部分的規範。這兩個規範確保容器領域中不會有任何不一致。
在很長的一段時間裡,容器是專門用於 Linux 內核的,但微軟和 Docker 的密切合作將容器帶到了微軟平台上。現在你可以在 Linux、Windows、Azure、AWS、Google 計算引擎、Rackspace,以及大型計算機上使用容器。甚至 VMware 也正在發展容器,它的 vSphere Integrated Container(VIC)允許 IT 專業人員在他們平台的傳統工作負載上運行容器。
容器對 CIO 的好處
容器在開發人員中因為以上的原因而變得十分流行,同時他們也給 CIO 提供了很大的便利。將工作負載遷移到容器中的優勢正在改變著公司運行的模式。
傳統的應用有大約十年的生命周期。新版本的發布需要多年的努力,因為應用是依賴於平台的,有時幾年也不能到達產品階段。由於這個生命周期,開發人員會儘可能在應用里塞滿各種功能,這會使應用變得龐大笨拙,漏洞百出。
這個過程影響了公司內部的創新文化。當人們幾個月甚至幾年都不能看到他們的創意被實現時,他們就不再有動力了。
容器解決了這個問題。因為你可以將應用切分成更小的微服務。你可以在幾周或幾天內開發、測試和部署。新特性可以添加成為新的容器。他們可以在測試結束後以最快的速度被投入生產。公司可以更快轉型,超過他們的競爭者。因為想法可以被很快轉化為容器並部署,這個方式使得創意爆炸式增長。
結論
容器解決了許多傳統工作負載所面對的問題。但是,它並不能解決所有 IT 專業人員面對的問題。它只是眾多解決方案中的一個。在下一篇文章中,我們將會覆蓋一些容器的基本術語,然後我們會解釋如何開始構建容器。
通過 Linux 基金會和 edX 提供的免費的 「Introduction to Linux」 課程學習更多 Linux 知識。
via: https://www.linux.com/blog/intro-to-Linux/2017/12/what-are-containers-and-why-should-you-care
作者:wapnil Bhartiya 譯者:lonaparte 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出
推薦閱讀:
※在Ubuntu 16.04環境下安裝Docker-CE(附視頻教程)
※Egg.js+Antd 擼個簡易版阿里雲CS控制台?
※Docker 空間使用分析與清理
※使用Docker進行分散式部署(概念篇)