
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.
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
私も同じ問題を抱えていたので、これを見ました。次の2つのバグでさらに詳しい情報を見つけました。
https://github.com/moby/moby/pull/27329
https://github.com/moby/moby/issues/31365
type=nfs
dockerは常に、別のオプションを追加してバージョンを設定することを期待していることがわかります。コマンドは次のようになります。
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