我是Docker初学者,并且NAS上的卷存在问题。
与共享的连接工作正常。通过SMB和NFS,我可以使用fstab中的以下条目将共享安装到Docker主机上
<IP of the NAS>:/volume1/sharenfs /nas/nfs nfs _netdev,bind 0 0
//<IP of the NAS>/sharesmb /nas/smb cifs _netdev,bind,credentials=/root/.cifs-credentials,iocharset=utf8,vers=3.0,uid=0,gid=0 0 0
通过Docker Host创建目录和文件可以正常工作。但是,一旦我启动一个容器并在共享上创建数据,它只会有条件地起作用。例如,portainer/portainer
可以不受任何限制地工作,但是kempkensteffen/usvn
或yobasystems/alpine-mariadb
不能按预期工作。在usvn
的设置过程中,缺少配置卷上的永久写入权限。
在Docker文档中说,应该使用Docker Volumes代替直接路径。因此,我按照记录创建了卷:
docker volume create \
--driver local \
--opt type=nfs \
--opt o="vers=4,addr=<IP of NAS>,rw" \
--opt device=:<Path on NAS> \
v_portainer
和
docker volume create \
--driver local \
--opt type=cifs \
--opt o=addr=<IP of NAS>,rw \
--opt device=//<IP of NAS>/<Share on NAS> \
--opt o=uid=0,username=<smbuser>,password=<smbpassword>,nounix,file_mode=0770,dir_mode=0770 \
v_portainer
因此,我删除了fstab条目,并使用给定的语法创建了卷。但这也会产生相同的效果-portainer
有效,但其他无效。现在,我对每一个提示都感到非常无助和感激。注意:我已经测试了NFS
和CIFS
都没有成功。
环境包括:
答案 0 :(得分:0)
我发现Docker也正在执行某种挂载。我的猜测是这些安装座会有问题。
我的解决方案是在iSCSI挂载而不是文件系统上使用块级设备。因此,所有容器均按预期工作。