
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=nfs
y 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