GNU/Linux >> Tutoriales Linux >  >> Linux

Hacer un montaje NFS en el host visible y de lectura y escritura dentro del contenedor Docker

Como ha notado en su actualización, el UID en los archivos no está asignado en los montajes de enlace, así es como Linux enlaza los montajes. Puede iniciar el contenedor con un UID diferente, pero esto dará como resultado que /etc/passwd dentro del contenedor se asigne a un usuario diferente, o incluso a ninguno (en su caso). Hay varias opciones, pero mi preferencia es modificar el UID del contenedor con un comando de mod de usuario que se ejecuta dentro de un punto de entrada para la imagen con mi secuencia de comandos fix-perms. Esto debe ejecutarse como root, pero luego puede usar gosu para regresar al usuario al ejecutar sus comandos. He hablado de esto en mis presentaciones de dockercon.

Tenga en cuenta que, en lugar de un montaje de enlace en el directorio host NFS, también puede realizar un montaje de volumen directamente en el servidor NFS. Aquí hay varios ejemplos de cómo hacerlo:

  # 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. Verificación de la validez de un montaje NFS

  2. La diferencia entre CMD y ENTRYPOINT en Docker Images

  3. Reenviar el puerto del host al contenedor docker

  4. ¿Qué hay dentro de una imagen/contenedor de Docker?

  5. ¿Cuál es el PID en el host de un proceso que se ejecuta dentro de un contenedor Docker?

Cómo actualizar la imagen y el contenedor de Docker a la última versión

Construyendo un contenedor a mano usando espacios de nombres:El espacio de nombres de montaje

Cómo obtener la dirección IP de un contenedor Docker desde el host

Cómo usar Docker Cp para copiar archivos entre el host y los contenedores

Cómo copiar archivos entre el host y el contenedor Docker

Límite de memoria y límite de CPU en Docker Container