Vous trouverez ci-dessous ce que j'ai fait pour monter un de mon répertoire hôte dans le conteneur. C'est plus compliqué qu'il n'y paraît car nous aimerions réaliser
- À l'intérieur du conteneur, nous devrions pouvoir écrire dans le répertoire.
- En dehors du conteneur, nous devrions pouvoir écrire dans les fichiers et répertoires créés à l'intérieur du conteneur.
Après avoir lu divers articles en ligne (le plus utile est ce numéro de github ), voici comment résoudre ce problème. L'astuce consiste à mapper l'uid et le gid de l'utilisateur hôte sur l'uid et le gid de l'utilisateur à l'intérieur du conteneur.
Supposons que je vais monter /home/breakds/projects
exactement au même endroit dans le conteneur. Le répertoire extérieur appartient à l'utilisateur breakds
, dont l'uid et le gid sont 1000
.
J'ai ensuite créé un utilisateur dans le conteneur appelé debian
, dont l'uid et le gid se trouvaient être 1000
également (car c'est le premier utilisateur non root). Je vais ensuite créer un (lxc) profie sur l'hôte en
lxc profile edit breakds
Et ci-dessous est le contenu du profil (je crois qu'il est au format yaml):
name: breakds
config:
raw.lxc: |
lxc.id_map =
lxc.id_map = u 0 165536 999
lxc.id_map = g 0 165536 999
lxc.id_map = u 1000 1000 1
lxc.id_map = g 1000 1000 1
lxc.id_map = u 1001 166537 64535
lxc.id_map = g 1001 166537 64535
user.vendor-data: |
packages:
- bash
description: allow home dir mounting for breakds
devices:
eth0:
name: eth0
nictype: bridged
parent: lxdbr0
type: nic
projects:
path: /home/breakds/projects
source: /home/debian/projects
type: disk
Ensuite, appliquez ce profil à ce conteneur de manière permanente:
$ lxc profile apply <my container> breakds
Cela devrait faire l'affaire.
REMARQUE : veuillez noter qu'avant de passer à ce profil, assurez-vous que tous les répertoires ou fichiers dont le propriétaire / groupe est debian doivent être supprimés (et probablement recréés après le changement). En effet, après le mappage uid et gid, leur propriété deviendra invalide. Au départ, je pensais que je ne fais que mapper 1000 à 1000, tout devrait bien se passer, mais je pense que j'ai raté quelque chose ici et ce serait génial si quelqu'un pouvait me conseiller sur la façon de résoudre ce problème sans le piratage.