如何使用用户名、密码、uid 和 gid 创建 CIFS docker 卷

Mik*_*kel 2 cifs docker

我正在尝试使用此处的 docker-volume-netshare驱动程序创建docker 卷https : //github.com/ContainX/docker-volume-netshare

顺序应该是这样的:

docker volume create -d cifs <some_options>
docker run -v <the_volume> <other_docker_options>
Run Code Online (Sandbox Code Playgroud)

我可以让它在某种程度上工作,但对于我的生活,我无法让它通过我需要的所有选项。

与其试图重述无数不同的失败模式,我更愿意陈述我的目标。在下面, docker-volume-netshare 将执行一个mount -t cifs ...命令。这可以在verbose设置为时的日志中看到true

这是我试图获取的挂载命令。我可以在那里获得用户名和密码,但只有在使用 .netrc 文件时,我发现无法将 uid 和 gid 输入命令。

mount -t cifs -o username=myusername,password=mypasswd,uid=500,gid=499,rw //myserver.example.net/mysharename /the_mount_point/
Run Code Online (Sandbox Code Playgroud)

所以我正在寻找的是通过 docker-volume-netshare 传递这些选项的权威语法。

小智 5

有点晚了......但这是解决方案:

docker volume create \
     --driver local \
     --opt type=cifs \
     --opt device=//server.domain/path/to/share \
     --opt o=addr=server.domain,username=myuser,password=mypw,file_mode=0777,dir_mode=0777 \
     --name myvolume
Run Code Online (Sandbox Code Playgroud)

在某些情况下 DNS 名称不起作用,此问题已在此PR 中修复,现在可以通过在 CIFS 选项中添加addr来使用域名。使用选项“凭据”而不是“用户名”和“密码”对我不起作用。我总是收到错误“未指定用户名”。从外壳(mount -t cifs //server/path -o credentials=/etc/cifs.cred /tmp/mnt)它工作正常。