我有以下现有的virtualbox主机
kerberos.swarm.local - MIT Kerberos server
nfs.swarm.local - NFS server w/ working Kerberos authentication
worker.swarm.local - Server w/ working Kerberos authentication & Docker Swarm installed
我成功配置并测试了我的Kerberized NFS共享。即可以从worker.swarm.local主机安装它。
注意:要实现此目的,我已经在主机上创建了访问文件/etc/krb5.conf和/etc/krb5.conf,并且启用并启动了Systemd服务nfs-client.target和rpc-gssd服务。
mount -t nfs4 -o addr=nfs.swarm.local,rsize=8192,wsize=8192,tcp,timeo=14,soft,nolock,nfsvers=4 nfs.swarm.local:/srv/nfs4 /mnt/nfs4
我在worker.swarm.local中创建了一个NFS卷,如下所示:
docker volume create --driver local --opt type=nfs4 --opt device=:/srv/nfs4 --opt o=addr=nfs.swarm.local,rsize=8192,wsize=8192,tcp,timeo=14,soft,nolock,sec=krb5,nfsvers=4 nfs-share-cli
然后我使用先前定义的NFS卷部署了Docker Swarm堆栈
version: "3.5"
services:
workspace:
image: busybox
command: tail -f /dev/null
restart: always
volumes:
- type: volume
source: nfs-share-cli
target: /mnt/nfs
volume:
nocopy: true
volumes:
nfs-share-cli:
external: true
但是,部署的容器仍在继续枯竭。 当我在Docker守护进程(dockerd)上运行strace时,看到以下错误
mount(":/srv/nfs4", "/srv/docker/volumes/nfs-share-cli/_data", "nfs4", 0, "addr=nfs.swarm.local,rsize=8192,wsize=8192,tcp,timeo=14,soft,nolock,sec=krb5,nfsvers=4") = -1 EINVAL (Invalid argument)
所以问题是为什么我的Kerberized NFS共享不能作为Docker卷工作?