Ubuntu

‘Docker’ 文件系統 - 與符號連結的兼容性

  • October 29, 2016

如果您想跳過對我們情況的解釋,問題會以粗體標記。

我是伺服器網路的開發人員。我們部署了多個伺服器實例。我們有 5 種伺服器類型,每種類型有 3-5 個實例。我們使用帶有 API 的獨立伺服器來開發附加組件。每種伺服器類型都有一組不同的附加組件。

目前我們正在使用文件夾結構並手動執行實例,如下所示:

/servers
   /server1
       /instance1/.
       /instance2/.
   /server2
       /instance1/.

ETC…

每個實例都有一個名為 module\ 的文件夾,在這個文件夾中我們有我們的 jar 文件(系統在 Java 上執行)

每次我們的附加組件更新時,我們都需要將其複製到需要附加組件的伺服器的所有實例中。我們想使用符號連結 (ln -s) 並且只儲存每個附加組件的一個實例。這將是理想的,除了我們想要轉移到虛擬實例管理這一事實。我們已經對幾個選項進行了分類,Docker 似乎是最適合我們需求的選項,它內置了負載平衡系統。

大多數虛擬平台也虛擬化文件系統,例如大多數虛擬機將創建一個包含有關文件的所有資訊的文件。

這裡的問題是,Docker 是虛擬化文件系統,還是從本機 Ubuntu 文件系統掛載實例?我知道 Docker 在可用時使用 LXC,但是我不太熟悉 LXC 的工作原理以及符號連結是否可以在實例之間工作如果它確實進行了虛擬化,那麼這顯然意味著符號連結將不是一個選項。如果是這種情況,那麼我們最終不會使用 Docker,因為為了提高效率,將文件系統保存到單個文件或一組文件的系統也會增加對硬碟驅動器的寫入量,因為文件任何更改都需要重新編寫,並且伺服器實例可能非常大(數 GB)。

我不確定我是否正確理解了您的問題,但是使用 Docker,您可以在來賓/虛擬系統的文件系統內從主機系統掛載一個目錄。您可以將同一目錄從主機掛載到多個來賓系統。您可以在此處找到更多詳細資訊:https ://docs.docker.com/userguide/dockervolumes/

它應該像這樣工作:

docker create --name=instance1 -v /home/shared/addon/:/usr/local/addon/:ro ...
docker create --name=instance2 -v /home/shared/addon/:/usr/local/addon/:ro ...
docker create --name=instance3 -v /home/shared/addon/:/usr/local/addon/:ro ...

這裡/home/shared/addon/是實例之間共享的,在每個實例內部都可以訪問/usr/local/addon/,而實例只能讀取它(ro)。你甚至不需要ln -s.

這只是一種可能的方法,在文件中有更高級的選項。

引用自:https://unix.stackexchange.com/questions/204250