GNU/Linux >> Tutoriels Linux >  >> Linux

Rendre un montage NFS sur l'hôte visible et en lecture-écriture dans le conteneur Docker

Comme vous l'avez noté dans votre mise à jour, l'UID sur les fichiers n'est pas mappé dans les montages liés, c'est ainsi que Linux lie les montages. Vous pouvez démarrer le conteneur avec un UID différent, mais cela entraînera le mappage de /etc/passwd à l'intérieur du conteneur vers un utilisateur différent, voire aucun (dans votre cas). Il existe différentes options, mais ma préférence est de modifier l'UID du conteneur avec une commande usermod qui s'exécute à l'intérieur d'un point d'entrée pour l'image avec mon script fix-perms. Cela doit être exécuté en tant que root, mais vous pouvez ensuite utiliser gosu pour revenir à l'utilisateur lors de l'exécution de vos commandes. J'en ai parlé dans mes présentations dockercon.

Notez qu'au lieu d'un montage lié au répertoire NFS de l'hôte, vous pouvez également effectuer un montage de volume directement sur le serveur NFS. Voici plusieurs exemples de la façon de procéder :

  # 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. Vérification de la validité d'un montage NFS

  2. Où sont stockés les images, les conteneurs et les volumes Docker sur le système hôte Linux ?

  3. Monter le partage SMB/CIFS dans un conteneur Docker

  4. Démarrer un shell dans le conteneur Docker Alpine

  5. Quel est le PID dans l'hôte d'un processus exécuté dans un conteneur Docker ?

Comment mettre à jour l'image Docker et le conteneur vers la dernière version

Construire un conteneur à la main à l'aide d'espaces de noms :l'espace de noms de montage

Comment obtenir l'adresse IP d'un conteneur Docker à partir de l'hôte

Comment utiliser Docker Cp pour copier des fichiers entre l'hôte et les conteneurs

Comment copier des fichiers entre l'hôte et le conteneur Docker

Limite de mémoire et limite de processeur dans le conteneur Docker