将 SMB 共享驱动器挂载到 Docker 容器

将 SMB 共享驱动器挂载到 Docker 容器

我有一个 SMB 共享驱动器,我正在从我的 Ubuntu 操作系统访问它。我需要连接到 VPN 才能访问此共享驱动器。我通过 Docker 容器运行的应用程序需要访问此共享 SMB 驱动器。我知道使用 Docker Volume create 应该可以轻松实现这一点,并且我已经阅读了文档,但我仍然遇到问题。这是我运行的创建卷和运行容器的代码。我能够毫无问题地创建卷。但容器没有运行。

   docker volume create \ 
   --driver local \
   --opt type=cifs  \
   --opt device=//IPADDRESS/array/  \ 
   --opt o=username=usr,password=******,file_mode=0777,dir_mode=0777 \
   --name arrayvolume

   docker run -it --rm -v /home/usr/Documents/Research/:/workspace/research \
   -v arrayvolume:/workspace/array --privileged --gpus all -p 8888:8888 imagerun bash 

当我运行 docker run 行时,出现此错误:

  docker: Error response from daemon: error while mounting volume '/var/lib/docker/volumes/array-volume/_data': failed to mount local volume: mount //IPADDRESS/array/:/var/lib/docker/volumes/array-volume/_data, data: username=usrname,password=******,file_mode=0777,dir_mode=0777: operation not supported.

我尝试找到已安装的 SMB 驱动器的路径,并尝试运行下面的代码。但它也返回了错误,提示“无效模式”,我认为这是因为文件夹名称中的冒号,我无法更改。

  docker run -it --rm -v /home/usr/Documents/Research/:/workspace/research \
  -v /run/user/1000/gvfs/smb-share:server=IPADDRESS,share=array:/workspace/array \
  --privileged --gpus all -p 8888:8888 -p 8050:8050 imagerun bash 

我尝试过使用 docker compose,但如果卷挂载不起作用,我不确定它是否会起作用。任何指导都值得赞赏。

相关内容