想使用Docker容器?先看看這些注意事項

Docker容器無疑是最近十年來最引人注目的技術之一,因為有了它,對我們思考設計、開發和運維軟體的方式產生了非常有益的影響。

但是就像每一個開發工具一樣,為了充分利用這些工具,需要注意一些使用中問題,Docker容器也是如此。下面是您需要關注的一些地方:

一個進程,一個Docker容器

每個Docker容器的核心都是一個進程,儘管每個Docker容器可以使用多個進程,但是這種方法不值得推薦。為了提高效率,每個容器應該只有一個特定的目標進程。其中一個非常重要的原因是如果只使用一個進程的話想在其他項目中遷移使用該Docker將變得容易很多。

儘管在容器中運行多個進程在技術上是可行的,但是單進程體系結構具有顯著的優勢,具體說來:

  • 易擴展

如果容器被隔離到一個單一的功能,水平調整容器會容易得多。 假設您需要另一個Tomcat容器,在其他地方遷移一個即可。但是,如果你的Tomcat容器也運行你的資料庫服務,並且其它的數據也需要被遷移走,那麼這就變得非常複雜。

  • 更好的復用行

如果一個容器只有一個功能,容器可以容易地重新用於其他項目。

  • 易問題定位

開發人員能夠在本地環境下解決那些在生產中的單個組件出現的問題,而不是從整個應用程序環境中定位問題來解決。


使用磁碟進行數據存儲

在容器內部保存數據幾乎沒有什麼用處,因為容器不斷地被停止和銷毀。無論什麼時候需要存儲數據,都要在磁碟上進行,因為磁碟可以在多個容器之間更安全地共享。磁碟是將數據存儲在容器的可寫層中的更好選擇,因為使用磁碟不會增加容器的大小,並且磁碟的數據存在於給定容器的生命周期之外。


Docker容器通信

每當一個Docker容器需要與另一個容器通信時,傳遞信息最好使用名稱或環境變數。Docker容器當然也有IP地址,但是無論何時啟動和停止容器,都是不會依賴IP地址的。


以普通用戶身份運行Docker

默認情況下,Docker容器以root用戶身份運行,眾所周知,以root用戶運行的容器完全可以控制主機系統。如果黑客訪問容器內的「root」用戶,他將獲得對運行Docker的主機的root許可權,為了避免這種情況,請始終以普通用戶身份運行Docker容器。


注意容器的體積

選擇一個容器的主要原因之一是它的體積小。但是,如果你把它做得更大,它的主要優勢就沒了。當您在群集中部署數千個容器時,如果需要容器相互通信並定期更新容器,這是一個非常嚴重的問題。

所以需要確保只有所需的文件和庫來運行對應的應用程序/進程。不要安裝不必要的軟體包或運行yum update等命令,將不需要的文件下載到新的映像層。

打個比方:一個冰箱中是無法裝下一個大型集裝箱的。


制定監測策略

開發和部署Docker容器不是你的工作的結束。您需要持續監控已部署的容器以及整個系統的運行狀況。選擇合適的工具並制定一個策略來有效地監控您的Docker容器,以確保最短的停機時間,從而使客戶滿意。


Docker容器的安全問題

只要Docker容器在本地開發環境中運行,就沒有安全問題。因為測試環境是與外部連接隔離的,是無法確定在外部是否完全的。當您的Docker鏡像部署在生產環境中時,因為需要處理外部網路訪問,安全性自然成為一個問題。為了預防這個問題,首先需要確保Docker容器所在的主機被修補了最新的安全更新,其次Docker容器中也更新了安全補丁。

你可能會喜歡