GNU/Linux >> Linux Esercitazione >  >> Linux

Rendere visibile un montaggio NFS sull'host e leggere-scrivere all'interno del contenitore Docker

Come hai notato nel tuo aggiornamento, l'UID sui file non è mappato nei bind mount, questo è il modo in cui Linux lega i mount. Puoi avviare il contenitore con un UID diverso, ma ciò comporterà la mappatura di /etc/passwd all'interno del contenitore su un utente diverso o addirittura nessuno (nel tuo caso). Esistono varie opzioni, ma la mia preferenza è modificare l'UID del contenitore con un comando usermod che viene eseguito all'interno di un punto di ingresso per l'immagine con il mio script fix-perms. Questo deve essere eseguito come root, ma puoi usare gosu per tornare all'utente durante l'esecuzione dei comandi. Ne ho parlato nelle mie presentazioni dockercon.

Nota, invece di un bind mount alla directory host NFS, puoi anche montare un volume direttamente sul server NFS. Ecco alcuni esempi di come farlo:

  # 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"
  ...

Linux
  1. Dove sono archiviati le immagini Docker, i contenitori e i volumi nel sistema host Linux?

  2. La finestra mobile può essere eseguita all'interno di un contenitore Linux?

  3. Cosa c'è all'interno di un'immagine/contenitore Docker?

  4. Monta la condivisione SMB/CIFS all'interno di un container Docker

  5. Docker in Docker non può montare il volume

Come aggiornare l'immagine Docker e il contenitore all'ultima versione

Costruire un contenitore a mano usando gli spazi dei nomi:lo spazio dei nomi di montaggio

Come ottenere l'indirizzo IP di un contenitore Docker dall'host

Come utilizzare Docker Cp per copiare file tra host e contenitori

Come copiare file tra host e contenitore Docker

Limite di memoria e limite della CPU nel contenitore Docker