NFS 无法解析主机名

NFS 无法解析主机名

我正在尝试创建一个 NFS docker 卷,但是无法通过主机名来执行此操作。

我正在使用以下命令创建卷:

sudo docker volume create --name foo_bar --driver local \
  --opt type=nfs4 \
  --opt o=addr=foo.lan.domain.xyz,rw,noatime,rsize=8192,wsize=8192,tcp,timeo=14 \
  --opt device=:/volume1/bar

但是,当我尝试创建使用该卷的 Docker 容器时,我看到:

docker: Error response from daemon: failed to mount local volume: mount :/volume1/bar:/var/lib/docker/volumes/foo_bar/_data, flags: 0x400, data: addr=foo.lan.domain.xyz,rsize=8192,wsize=8192,tcp,timeo=14: invalid argument.

系统日志显示:

kernel: [ 1662.349322] NFS: bad IP address specified: addr=foo.lan.domain.xyz

看来 NFS 在连接前并未尝试解析域名。这个域名当然是有效的。

$ host foo.lan.domain.xyz
foo.lan.domain.xyz has address 10.0.0.3

$ nslookup foo.lan.domain.xyz
Server:     127.0.0.53
Address:    127.0.0.53#53

Non-authoritative answer:
Name:   foo.lan.domain.xyz
Address: 10.0.0.3

$ showmount -e foo.lan.domain.xyz
Export list for foo.lan.domain.xyz:
/volume1/qux   lore.lan.domain.xyz

$ getent hosts 10.0.0.3
10.0.0.3        Bar.lan.domain.xyz

我如何让 NFS 解析此主机名?如果有帮助的话,我真的不想对 IP 地址进行硬编码。

答案1

我看到这个是因为我也遇到了同样的问题。我在以下两个错误中找到了更多信息

https://github.com/moby/moby/pull/27329

https://github.com/moby/moby/issues/31365

事实证明,docker 总是期望type=nfs你通过添加另一个选项来设置版本。你的命令应该是

sudo docker volume create --name foo_bar --driver local \
  --opt type=nfs \
  --opt o=addr=foo.lan.domain.xyz,rw,noatime,rsize=8192,wsize=8192,tcp,timeo=14,nfsvers=4 \
  --opt device=:/volume1/bar

您可以在容器运行时执行此命令来验证挂载使用的版本

sudo nfsstat -m

相关内容