¿Cómo puedo compartir una carpeta entre el sistema host (ubuntu 14.04) y un contenedor ubuntu lxc?
Intenté montar la carpeta en el host:
sudo mount --bind /media/data/share /media/data/container/name/rootfs/share
pero no puedo ver ningún archivo.
Lo mismo va para:
sudo ln -s /media/data/share /media/data/container/name/rootfs/share
¿Necesito cambiar los permisos para la carpeta compartida?
lxd
) como se usa en esta respuesta o a LXC (el software y el conjunto de herramientas "antiguo" con las herramientas conlxc-*
nombre) o al proyecto (donde LXC es la abreviatura de LinuX Containers). Es la razón por la que hice esta pregunta en el meta de Unix.SE.Encontré un artículo en el wiki de openSUSE: https://en.opensuse.org/User:Tsu2/LXC_mount_shared_directory
Seguí los pasos y funciona ahora.
Crear directorio de host:
Crear directorio en el contenedor lxc:
Edite el archivo de configuración lxc en el host:
fuente
share
en ellxc.mount.entry
es crítica.A continuación se muestra lo que hice para montar uno de mi directorio de host en el contenedor. Esto es más complicado de lo que parece porque nos gustaría lograr
Después de leer varios artículos en línea (el más útil es este problema de github ), así es como resuelvo esto. El truco consiste en asignar el uid y gid del usuario host al uid y gid del usuario dentro del contenedor.
Supongamos que voy a montar
/home/breakds/projects
exactamente en la misma ubicación en el contenedor. El directorio externo es propiedad del usuariobreakds
, cuyo uid y gid son1000
.Luego creé un usuario en el contenedor llamado
debian
, cuyo uid y gid también eran1000
(porque es el primer usuario no root). Luego crearé un perfil (lxc) en el host porY a continuación se muestra el contenido del perfil (creo que está en formato yaml):
Luego, aplique este perfil a ese contenedor permanentemente:
Esto debería funcionar.
NOTA : Tenga en cuenta que antes de cambiar a este perfil, asegúrese de que todas las direcciones o archivos cuyo propietario / grupo es debian deben eliminarse (y probablemente volver a crearse después del cambio). Esto se debe a que después de la asignación de UID y GID, su propiedad dejará de ser válida. Originalmente pensé que ya que solo estoy asignando 1000 a 1000 todo debería estar bien, pero creo que me perdí algo aquí y sería genial si alguien puede aconsejar sobre cómo resolver esto sin el truco.
fuente
chown
desde el host.También puede hacer esto sin LXD editando el archivo de configuración LXC directamente:
También debe asegurarse de que la cuenta del usuario del contenedor tenga permiso para asignar a uid / gid 1000 en el host editando / etc / subuid y / etc / subgid:
fuente