我有一个特定用户的 Windows 10 共享。然后我在 docker 容器中安装了 Debian:stretch。我尝试像这样安装共享文件夹:
root@b9cda19f784c:~# mount -t cifs -v -o username=dockerfile,password=docker,sec=ntlm //10.0.75.1/hlds /root/somedir
mount: permission denied
我尝试删除sec=ntlm
选项、设置uid
和gid
选项,但没有成功。另外,我没有看到任何我期望的详细消息-v
。
在我的 Windows 10 主机上,我可以使用以下命令挂载此文件夹:
net use p: \\10.0.75.1\hlds /user:dockeruser
如何使mount
命令输出更多信息以进行调试?或者我的命令中缺少什么mount
?
更新
运行带有标志的容器--privileged
没有帮助:
root@62d77b4c1058:/# mount -v -t cifs -o username=dockerfile,password=docker //10.0.75.1/hlds /root/mnt
mount.cifs kernel mount options: ip=10.0.75.1,unc=\\10.0.75.1\hlds,user=dockerfile,pass=********
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
使用 Docker 创建卷并安装它没有成功:
PS F:\repos\hlds-docker> docker volume create --opt type=cifs --opt device=//10.0.75.1/hlds --opt o=username=dockerfile,password=docker,file_mode=0777,dir_mode=0777,uid=0,gid=0 myvolume
myvolume
PS F:\repos\hlds-docker> docker run --rm -v myvolume:/root -it --privileged debian:stretch bash
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: error while mounting volume with options: type='cifs' device='//10.0.75.1/hlds' o='username=dockerfile,password=docker,file_mode=0777,dir_mode=0777,uid=0,gid=0': permission denied.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.
我的 Docker 版本:
PS F:\repos\hlds-docker> docker version
Client: Docker Engine - Community
Version: 18.09.1
API version: 1.39
Go version: go1.10.6
Git commit: 4c52b90
Built: Wed Jan 9 19:34:26 2019
OS/Arch: windows/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.1
API version: 1.39 (minimum version 1.12)
Go version: go1.10.6
Git commit: 4c52b90
Built: Wed Jan 9 19:41:49 2019
OS/Arch: linux/amd64
Experimental: false
答案1
因此,经过一番尝试和磨难后,我找到了解决方案(但我认为这很奇怪)。您需要执行 2 个步骤:
- 将一些虚拟文件放入您的目录中,使其不为空(无论哪种方式都会出现
permission denied
错误) - 使用选项创建 docker 卷
noserverino
(偶然发现)
所以就我而言是:
docker volume create --opt type=cifs --opt device=//10.0.75.1/hlds --opt o=username=dockeruser,password=docker,noserverino,file_mode=0777,dir_mode=0777,uid=1000,gid=1000 somevol
进而:
docker run --rm -v somevol:/home/steam/opts -it krow7/hlds:1.0 bash
因此,您的目录由您需要的确切用户拥有,并且可以对已安装共享上的文件执行所有操作。
我希望有人会觉得它有用。