Docker

可以從設備安裝 Docker 捲而不是綁定安裝目錄嗎?

  • September 10, 2021

我想在 Linux 主機上設置一個 docker 服務(docker-compose),其中一個容器安裝了整個

$$ removable $$物理硬碟驅動器作為 docker 卷。 我知道在 docker-compose 中設置綁定掛載很簡單,我可以在主機上手動掛載驅動器。這種方法確實有效,但它涉及手動步驟,並有可能出現人為錯誤。當此服務以主機驅動器根分區上的空白目錄啟動時,會發生不好的事情。如果驅動器在仍然安裝的情況下被拔掉,會發生更糟糕的事情

我想做的是讓 docker 將設備直接安裝為卷。這將具有更少/更簡單的手動步驟和故障保護的優點,如果驅動器失去,服務將無法啟動。這也將確保我們在服務停止時解除安裝驅動器。

鑑於卷基本上只是作業系統掛載,感覺這應該很簡單,但是通過文件進行了大量搜尋,我仍然沒有進一步前進。

在 linux docker 主機上,這可以通過首先使用local驅動程序創建命名卷來實現。

命名卷只是容器啟動時掛載內容的規範,因此在創建卷時不需要插入設備。

您首先從 docker 創建一個命名卷。假設我要掛載的設備是 ext4 驅動器,並且將始終顯示為/dev/disk/by-uuid/d28c6d3a-461e-4d7d-8737-40e56e8f384a

# Create "my-volume"
docker volume create --driver=local --opt type=ext4 --opt device=/dev/disk/by-uuid/d28c6d3a-461e-4d7d-8737-40e56e8f384a my-volume
# Run a container with it mounted to a path.
docker run -v my-volume:/my-volume --rm -it alpine sh

注意:在 linux 下設備名稱可以經常改變。所以使用類似的東西不是一個好主意,/dev/sdb1因為你不能保證它總是被命名sdb1。在上面的範例中,我使用 uuid 來確保始終安裝正確的設備。

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