NFS no puede resolver el nombre de host

NFS no puede resolver el nombre de host

Estoy intentando crear un volumen acoplable NFS, pero no puedo hacerlo por nombre de host.

Estoy creando el volumen con:

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

Sin embargo, cuando intento crear un contenedor acoplable que use este volumen, veo:

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.

El registro del sistema muestra:

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

Parece que NFS no intenta resolver el nombre de dominio antes de conectarse. Este nombre de dominio es ciertamente válido.

$ 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

¿Cómo puedo hacer que NFS resuelva este nombre de host? Realmente prefiero no codificar la dirección IP si se puede ayudar.

Respuesta1

Vi esto porque estaba lidiando con el mismo problema. Encontré más información en los siguientes dos errores.

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

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

Resulta que Docker siempre espera type=nfsy espera que usted configure la versión agregando otra opción. Tu comando debe ser

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

Puede verificar qué versión está usando el montaje ejecutando este comando mientras se ejecuta el contenedor

sudo nfsstat -m

información relacionada