Saltar al contenido

Agregar un directorio de host compartido a un contenedor LXC / LXD

Solución:

Las instrucciones en https://wiki.gentoo.org/wiki/LXD que mencionas son correctas, pero es posible que necesiten un poco más de explicación.

En el host, primero verifica la propiedad del directorio en el que se almacenan los datos del contenedor. Correr

sudo ls -l /var/lib/lxd/containers

y marque el propietario del contenedor con el que le gustaría compartir el directorio. En mi caso el uid y gid ambos eran 100000.

A continuación, utilícelos para cambiar la propiedad del directorio que desea compartir:

sudo chown 100000:100000 /tmp/share_on_host

Comparte el directorio con el contenedor de la forma que indicaste en tu comentario:

lxc config device add mycontainer sharedtmp disk 
                  path=/tmp/share_on_guest source=/tmp/share_on_host

Ahora, en el contenedor, verá que el directorio /tmp/share_on_guest (No aconsejaría montar su directorio como /tmp porque el sistema lo usa para otras cosas y tiene permisos especiales) es propiedad de root. A partir de aquí puedes usar chown en el contenedor para cambiar la propiedad a la apropiada uid y gid para su usuario en el contenedor.

Como nota al margen, después de cambiar la propiedad del contenedor a, por ejemplo, un usuario con uid 33 verá en el anfitrión que el uid ahora hay 100033, lo que tiene mucho sentido.

Aquí hay una respuesta actualizada a esta pregunta.

Monte la carpeta de host /var/www como /var/test en el contenedor.

lxc config device add mycontainer vartest disk source=/var/www path=/var/test

Puede asignar adicionales dispositivos al contenedor, y estas pueden ser carpetas accesibles desde el host.

$ lxc config ## display help
...
lxc config device add [<remote>:]<container> <device> <type> [key=value...]
    Add a device to a container.
...

Tenga en cuenta que <device> es solo un nombre arbitrario que usted asigna, que se utilizará como un ID para la administración posterior del dispositivo.

Por ejemplo, para montar la carpeta de host “./host” como “/ mnt / host” en el contenedor …

lxc config device add mycontainer vartest disk source=$(pwd)/host path=/mnt/host

Queda un problema – si desea que tanto el host como el contenedor puedan escribir en esta carpeta, la propiedad y los permisos deben configurarse en consecuencia. Esto se complica por el modo predeterminado de LXD que virtualiza los rangos numéricos para usuarios y grupos. id valores. Sin embargo, hay una solución fácil: omita esta virtualización configurando el contenedor para que se ejecute con privilegios equivalentes al host …

lxc config set <container> security.privileged true

Las implicaciones completas de seguridad del host de este enfoque no están claras para mí en este momento, pero la virtualización parece “contenerlas” de alguna manera. El riesgo práctico depende de cómo y por qué utilizará el contenedor. Consulte las notas técnicas en https://insights.ubuntu.com/2017/06/15/custom-user-mappings-in-lxd-containers

Además, tenga en cuenta que este enfoque probablemente funcione mejor si normalmente opera en el contenedor como un usuario no root, como si lo adjunta con …

lxc exec zesty -- su --login ubuntu
  • Notas adicionales sobre la configuración: https://help.ubuntu.com/lts/serverguide/lxd.html
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *