Jak jste si poznamenali ve své aktualizaci, UID na souborech není mapováno v připojení připojení, takto Linux připojení připojení provádí. Můžete spustit kontejner s jiným UID, ale to povede k tomu, že /etc/passwd uvnitř kontejneru bude mapován na jiného nebo dokonce žádného (ve vašem případě) uživatele. Existují různé možnosti, ale upřednostňuji upravit UID kontejneru pomocí příkazu usermod, který běží uvnitř vstupního bodu pro obrázek pomocí skriptu fix-perms. To je třeba spustit jako root, ale pak můžete použít gosu
pro přechod zpět k uživateli při spouštění vašich příkazů. Mluvil jsem o tom ve svých prezentacích na dockerconu.
Všimněte si, že namísto připojení vazby k hostitelskému adresáři NFS můžete také provést připojení svazku přímo na server NFS. Zde je několik příkladů, jak to udělat:
# create a reusable volume
$ docker volume create --driver local \
--opt type=nfs \
--opt o=nfsvers=4,addr=nfs.example.com,rw \
--opt device=:/path/to/dir \
foo
# or from the docker run command
$ docker run -it --rm \
--mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=nfs,\"volume-opt=o=nfsvers=4,addr=nfs.example.com\",volume-opt=device=:/host/path \
foo
# or to create a service
$ docker service create \
--mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=nfs,\"volume-opt=o=nfsvers=4,addr=nfs.example.com\",volume-opt=device=:/host/path \
foo
# inside a docker-compose file
...
volumes:
nfs-data:
driver: local
driver_opts:
type: nfs
o: nfsvers=4,addr=nfs.example.com,rw
device: ":/path/to/dir"
...