簡體   English   中英

微服務應用程序…用於數據庫的Docker卷還是沒有Docker卷?

[英]Microservice Application … Docker Volume for Databases or no Docker Volume?

我有一個應用程序(JHipster Gateway,UAA,Registry,5個微服務),每個應用程序源均構建一個Docker映像並將其推送到GitLab注冊表。 目前,我正在使用Docker-Compose文件在Rancher上運行所有程序。 我的Mongo數據庫卷當前位於每個容器中。

我需要有關卷安裝的建議。 我看到的是這些選項。

  1. 將數據保留在容器中並進行監視和備份
  2. 使用外部安裝並監視主機上的卷。

如果我將Mongo數據保留在容器中,是否只是將其設置為僅群集,並且當內部卷填滿時,數據庫是否會擴展? 我正在尋找一些說明,以幫助我選擇內部或外部(在主機上)Mongo數據庫裝載?

提前致謝,

戴維·L·懷特赫斯特

切勿將您關心的任何數據直接存儲在容器中。 對於命名卷(Docker本地,多主機Swarm環境中的某些支持,主機特定的依存關系更少)和主機綁定裝載(更容易備份和維護,可以在需要時直接進行檢查)都有很好的論據),但使用某種安裝存儲。

這里最重要的注意事項是刪除和重新創建容器是相當常規的。 如果您正在運行的軟件或其底層庫堆棧存在安全問題,則通常需要獲取(或構建)更新的映像,刪除現有容器,然后根據新映像重建它。 如果數據僅存儲在容器中,則在此常規的刪除和重新創建操作期間,存在丟失數據的巨大風險。

原則上,如果您真的很小心,並且您有一個復制的數據存儲,則可以在沒有外部卷的情況下進行滾動並且不會丟失數據。 這很棘手,需要很多耐心。 您將被迫拆除一個副本,等待其數據在其他副本之間重新平衡,啟動一個新副本,等待它接受某些數據,依此類推。 如果您可以通過停止容器,刪除容器,使用相同的數據存儲啟動一個新容器並立即將其與已填充的數據一起使用來釋放點,那將更易於管理。

(這里的另一個推論是您不“備份容器”,因為它們沒有您關心的任何數據。您確實備份了存儲在主機或Docker命名卷中的數據,並且您始終可以重新創建容器中的圖片加上外部數據。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM