Docker

Docker中通常如何配置持久儲存的底層磁碟空間(和相關技術)

  • January 17, 2022

我想將持久儲存附加到我的 docker 容器。我嘗試過使用 TrueNAS 的 NFS,但似乎沒有運氣。

當然,我以錯誤的方式處理這個問題。將持久儲存附加到容器外部的常見約定是什麼,以便如果容器發生故障或重新製作,數據將重新附加或至少保持存在。

編輯:為混亂道歉。我不是在談論綁定掛載或卷,我很了解這些技術。我指的是底層文件系統,即 NFS 等。是否有標準工具或管理系統,例如用於 kubernetes 塊儲存的 Longhorn。使用文件、對像或塊儲存解決方案等更好嗎?

編輯 2:我已經準備好 Docker 文件中的所有內容。我知道捲和驅動程序。我不知道如何正確使用它們和相應的選項,因為它們沒有正確記錄,或者這些東西通常如何安裝到解決方案中。是的,我可以“使用驅動程序”,但究竟如何?NFS 是一個共同的主題嗎?塊儲存呢?對象儲存?這是如何在系統級別上建構的。

編輯:我添加了這個編輯,因為一些黃鼠狼因為不夠具體而關閉了它。好像問這個問題是不相關的。我是唯一一個有實際答案的人。即使是 docker 的普通使用者也不知道這一切是如何在幕後工作的。你認為我們不應該發布關於這個問題的文章嗎?哦不,當然不是……只是讓人們一遍又一遍地重複同樣的事情。

就底層文件系統技術而言,慣例似乎是使用塊儲存解決方案,例如 Cinder、BGFS 等……(可以使用 Ceph、iSCSI 和其他塊文件類型)或對象儲存,例如 Minio

這些類型的解決方案有助於輕鬆管理底層磁碟空間,並考慮到分佈式文件系統的隱含需求。

它確實取決於案例,NFS 非常適合不關心性能的案例,例如寫入文件。通過這種方式,wikijs 容器將成為 NFS 的完美候選者,因此編寫使用者生成的內容可以與容器保持分離。

塊儲存解決方案在容器方面也大放異彩的地方在於,它可以在快速的創建-銷毀週期中輕鬆部署。就像典型的案例一樣。

再說一次,如果您正在執行大量無限期的容器(例如我使用 Nextcloud、Heimdall、pihole 等),那麼塊儲存解決方案也可以為您提供更靈活的安排。我喜歡在這種情況下使用塊儲存的想法,因為磁碟和文件系統由應用程序/容器處理,而不是取決於外部因素。這可能是現實世界的問題,也可能不是,但我可以想像 NFS 存在潛在問題,因為這些原因或更具體地說:對塊儲存解決方案的妥協較少。

最後,我需要確認這一點,跟踪與每個容器關聯的捲本身就是一項任務。這些塊儲存解決方案可以提供一種簡潔且易於管理的方式來跟踪跨創建-銷毀週期以進行備份和恢復。

將持久儲存附加到容器外部的常見約定是什麼

沒有。

整個 Docker 範例是基於您可以根據需要創建和銷毀容器的假設。他們不堅持,也不應該堅持。

如果您的容器期望某些東西在那裡,那麼您做錯了™

引用自:https://serverfault.com/questions/1085564