簡體   English   中英

將網絡文件夾掛載到 Windows 10 上的 Docker 容器

[英]Mounting a network folder to a Docker container on Windows 10

我正在嘗試使用以下語法在 Windows 10 上安裝帶有 Docker 容器的網絡文件夾。 使用 UNC 路徑不起作用。 我在 Hyper-V 和穩定版本的 Docker 下運行它。

docker run -v \\some\windows\network\path:/some/local/container

在我使用 Docker Toolbox 之前,我可以使用 VirtualBox 將網絡共享映射到內部文件夾。 我試過將網絡共享添加為驅動器,但它沒有在設置面板下顯示為可用驅動器。

目前我正在使用 mklink 將本地文件夾鏡像到網絡文件夾,但我不想依賴於此作為解決方案。

使用基於 Windows 的容器執行此操作

轉到 Microsoft 文檔https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-containers/persistent-storage#smb-mounts

在那里您將找到有關如何將網絡驅動器作為卷安裝在 Windows 容器中的信息。


使用基於 Linux 的容器執行此操作

目前(截至 2019 年 11 月 13 日)是不可能的。 但是你可以使用一個插件: https : //github.com/ContainX/docker-volume-netshare

我沒有使用它,所以我沒有使用它的經驗。 剛剛在我的研究中發現它,並希望將其添加為一個潛在的解決方案。

推薦方案

在研究這個主題時,我覺得您可能應該從容器內安裝驅動器。 您可以通過文件或參數傳遞所需的憑據。

憑據作為文件的示例

您需要在容器中安裝包cifs-utils ,添加

COPY ./.smbcredentials /.smbcredentials

到Dockerfile,然后在容器啟動后運行以下命令:

sudo mount -t cifs -o file_mode=0600,dir_mode=0755,credentials=/.smbcredentials //192.168.1.XXX/share /mnt


可能重復

這里有另一個關於這個主題的 stackoverflow 線程: Docker add network drive as volume on windows

那里提供的答案( https://stackoverflow.com/a/57510166/12338776 )雖然對我不起作用。

我不是Windows用戶,因此無法測試此答案,但是查看Docker代碼 ,看來您需要在\\\\?\\路徑。

因此,您應該運行:

docker run -v \\?\some\windows\network\path:/some/local/container

您不應該這樣做,因為docker期望文件是本地文件,並且讀/寫操作在連接錯誤時會超時。

您應該嘗試使軟件直接連接到網絡共享。

暫無
暫無

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

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