Docker和远程卷

时间:2019-01-27 14:39:25

标签: docker volume nfs cifs

我是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/usvnyobasystems/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有效,但其他无效。现在,我对每一个提示都感到非常无助和感激。注意:我已经测试了NFSCIFS都没有成功。

环境包括:

  • Docker主机操作系统:Alpine Linux 3.8.2(当前在VirtualBox VM中运行)
  • Docker版本:18.06.1-ce
  • NAS:与NFS和NFS4共享或与SMB3共享CIFS

1 个答案:

答案 0 :(得分:0)

我发现Docker也正在执行某种挂载。我的猜测是这些安装座会有问题。

我的解决方案是在iSCSI挂载而不是文件系统上使用块级设备。因此,所有容器均按预期工作。