做營銷網(wǎng)站設(shè)計百度免費咨詢
容器化,是指使用容器技術(shù)(Docker/containerd等)運行應(yīng)用程序(容器),并使用容器編排技術(shù)(例如 K8s)來管理這些容器。
我在之前的文章 《使用 Dockerfile 構(gòu)建生產(chǎn)環(huán)境鏡像》 提及普通的虛擬機部署存在的問題:
為什么有這篇文章,是因為我在真正做容器化改造的時候,發(fā)現(xiàn)公司生產(chǎn)環(huán)境存在大量的坑:
- 傳統(tǒng)虛擬機部署,基本依賴克隆或者手工編譯。由于人力原因,SRE 歷來單傳,編譯出來的 PHP、擴展等二進制版本不一致;
- 項目開發(fā)人員痛苦不堪——他沒辦法模擬出接近于線上一致的環(huán)境(碰不到摸不著,各種擴展版本都要自己去編譯);
- 新人入職都會靈魂拷問你一句——我怎么把線上的代碼跑起來?
- ……
另外,傳統(tǒng)的虛擬機部署,還存在成本浪費——虛擬機無法做到容器的資源隔離和擴縮容,資源利用率不高。
所以我們可以發(fā)現(xiàn),有以下幾點好處:
一、環(huán)境的高度一致性
- 容器需要制作鏡像文件,描述環(huán)境的構(gòu)建過程,也就意味著它可以保證環(huán)境的高度一致
- 無論本地環(huán)境或者生產(chǎn)環(huán)境,由于 Dockerfile 的存在,不同的操作系統(tǒng)也可以兼容
- 高度一致性帶來了環(huán)境的統(tǒng)一,統(tǒng)一的環(huán)境有利于 CI/CD 流程,結(jié)合自動化技術(shù)提升效率
二、資源隔離
- 以往虛擬機容易因為混合部署,而某些應(yīng)用耗費內(nèi)存過大,導(dǎo)致程序 OOM 崩潰,而容器由于資源隔離,不會互相影響
- 合理分配每個容器的資源,有利于提高資源利用率,降低資源成本
- 通過 Linux Cgroups 技術(shù)(Linux Control Group)限制資源上限;通過 Linux NameSpace 機制修改進程看到的外部資源的 “視圖”
三、輕量級
- 相比虛擬機,容器啟動速度在秒級別
- 容器為進程,通過 Linux NameSpace 機制和 unionFS,使得進程本身看起來好像擁有一個隔離的環(huán)境和文件系統(tǒng)(實際上還是宿主機的一個進程)
容器化是未來的一大趨勢!讓我們擁抱云原生吧!
文章來源于本人博客,發(fā)布于 2022-11-05,原文鏈接:https://imlht.com/archives/407/