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

Связанный контент