NFS가 호스트 이름을 확인하지 못함

NFS가 호스트 이름을 확인하지 못함

NFS 도커 볼륨을 생성하려고 하는데 호스트 이름으로는 생성할 수 없습니다.

다음을 사용하여 볼륨을 생성합니다.

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.

syslog에는 다음이 표시됩니다.

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

type=nfsdocker는 항상 다른 옵션을 추가하여 버전을 설정하기를 기대하고 있는 것으로 나타났습니다 . 당신의 명령은 다음과 같아야합니다

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

관련 정보