[英]Docker swarm with volume mounted container
我有一個 docker 容器,它的卷與主機卷一起安裝。 這是它的 docker-compose 服務:
core:
image: index.docker.io/kaushal/demo_img
volumes:
- ./data/custom:/opt/custom:z
這里./data/custom
是主機目錄,它與容器中的/opt/custom
目錄一起掛載。 現在,為了實現高可用性,我想在不同的節點上使用 docker swarm 運行這個容器的多個副本。
當我啟動 swarm 時,它總是顯示0/2
副本。 原因在這里突出顯示: https://stackoverflow.com/a/56707801/5353128 (tl;博士,因為我在其他 swarm 節點中沒有./data/custom
目錄)。
這個問題似乎是 docker swarm 的常見問題,但我找不到直接的解決方案。 一些 SO 帖子建議使用共享卷,但不清楚如何為這樣一個簡單的用例實現這樣的共享卷。
此外,是否有任何替代共享卷? 任何參考將不勝感激。 謝謝!
Docker 本身只為一個卷安裝東西。 它本身沒有內置任何類型的文件共享機制。您指定的卷類型是綁定掛載,它只是將運行容器的主機上的目錄掛載到該容器內的某個位置。 See https://unix.stackexchange.com/questions/198590/what-is-a-bind-mount for info on what a bind mount is in the generic linux/unix sense and https://docs.docker.com/ storage/bind-mounts/用於特定於 docker 的品種。
另一種類型的掛載是 NFS。 https://stackoverflow.com/a/44825756/4930423是一個很好地討論了這個問題的答案。
您也可以引入其他文件系統類型——cifs/samba 是另一種可能性。
人們使用的另一種方法是讓每個節點使用主機的 /etc/fstab 掛載一個 nfs/cifs/other 類型的共享目錄,然后從那里使用 docker 綁定掛載。 任何滿足您的工作負載要求的文件共享技術都可以使用此設置 - 確保您的 io 足夠高,並且所討論的工作負載沒有任何基本問題,因為遠程訪問類型文件系統不可避免地會增加延遲。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.