今天來討論一個現在的主流未來的趨勢,容器 Container,這個概念已經有好幾年的討論了,著名的軟體工具Docker也已經問世了五年以上,所以其實也不算真的很新的議題啦~~
網路上搜尋文章也都有一大票介紹,尤其Docker的安裝與操作教學更是每個系列文章的必備,但我今天因為是後端工程師的DevOps探討,屬於比較簡單入門的系列,所以不免俗的要再來介紹一下
我先假定大家都知道VM是什麼,如果不太清楚的朋友,請參考
容器是一個虛擬化的空間,裝載應用程式以及對應的資源環境,其實聽起來不是很懂那我換一句話來說,容器是一個空間可以搭載應用程式以及對應的環境,欸~好像跟VM差不多啊?!
其實,還是不一樣的!來看看這兩張圖
VM | Container |
---|---|
圖片來源:容器和 Docker 簡介 |
有看出來最大的差異了嗎?對,Container不需要裝載OS
也因為不需要OS,Container會相較起來更加輕型,有別於以往VM動輒幾GB,容器大部分都可以在MB的容量下完成,很直接的省去了很多資源上不必要的浪費,基本上會放入容器中的都是必要的,包含Library、Binary,也因為比較輕量,他的啟動速度會相對快非常多,只需要幾秒,頂多一分鐘左右就可以完成,當有高流量活動出現時,容器的橫向擴充速度也相形優勢很多,而容器還有個特色是他的移轉性很強,由上圖可看出,只要在伺服器Host上裝載Container Engine就可以快速運行各個容器了,無論Host是哪種環境,另外,容器與容器之間也可以彼此隔離,與多個VM設定載同一台Host上的概念相同,因此,容器快速且越來越紅
再來條列一次上述的Conatiner的優點:
有這些優點也剛好符合了現在產業的趨勢,雲服務、微服務,因此現在大部分團隊會導入下列項目:
最後,是不是所有團隊都要用呢?以後會不會沒有VM了?我想應該暫時是不會的,VM還是有它的優點存在,還是有情境是適合使用的,外加上現在很多的系統都是使用VM,要轉移到Container上,也不是一朝一夕就可以完成,所以還有段路程要走,那什麼情境下的專案適合使用Container呢?我認為
明天開始就會進入實作分享了,敬請期待!(也是我覺得最困難的Part...)
參考資料、延伸閱讀:
下集預告:實作分享 - 整體概觀與專案程式碼準備