資料庫不適合docker及容器化的幾大原因:
#1、資料不安全
#即使你要把Docker 資料放在主機來存儲,它依然不能保證不丟資料。 Docker volumes 的設計圍繞著 Union FS 映像層提供持久存儲,但它仍然缺乏保證。
使用目前的儲存驅動程序,Docker 仍然存在不可靠的風險。如果容器崩潰並資料庫未正確關閉,則可能會損壞資料。
2、執行資料庫的環境需求
常看到 DBMS 容器和其他服務運行在同一台主機上。然而這些服務對硬體要求是非常不同的。
資料庫(特別是關係型資料庫)對 IO 的要求較高。一般資料庫引擎為了避免並發資源競爭而使用專用環境。如果將你的資料庫放在容器中,那麼將浪費你的專案的資源。因為你需要為該實例配置大量額外的資源。在公有雲,當你需要 34G 記憶體時,你啟動的實例卻必須開 64G 記憶體。在實踐中,這些資源並未完全使用。
怎麼解決?您可以分層設計,並使用固定資源來啟動不同層次的多個實例。水平伸縮總是比垂直伸縮更好。
3、網路問題
要理解 Docker 網絡,您必須對網路虛擬化有深入的了解。也必須準備應付好意外狀況。你可能需要在沒有支援或沒有額外工具的情況下,進行 bug 修復。
4、狀態
在 Docker 中打包無狀態服務是很酷的,可以實現編排容器並解決單點故障問題。但是資料庫呢?將資料庫放在同一個環境中,它將會是有狀態的,並使系統故障的範圍更大。下次您的應用程式實例或應用程式崩潰,可能會影響資料庫。
5、額外的隔離對資料庫是不利的
其實我在第二點和第三點原因中提到了這一點。但我把這個列為單獨的原因,因為我想再次強調這一事實。我們擁有的隔離等級越多,我們獲得的資源開銷就越多。相較於專用環境而言,容易水平伸縮可以使我們得到更多的好處。然而在 Docker 中水平伸縮只能用於無狀態計算服務,而不是資料庫。
我們沒有看到任何針對資料庫的隔離功能,那為什麼我們應該把它放在容器中?
推薦教學:docker教學
以上是資料庫不適合docker及容器化的原因的詳細內容。更多資訊請關注PHP中文網其他相關文章!