Poniżej zrobiłem, aby zamontować jeden z moich katalogów hosta w kontenerze. To trudniejsze niż się wydaje, ponieważ chcielibyśmy to osiągnąć
- Wewnątrz kontenera powinniśmy mieć możliwość zapisu do katalogu.
- Poza kontenerem powinniśmy móc zapisywać do plików i katalogów utworzonych w kontenerze.
Po przeczytaniu różnych artykułów online (najbardziej pomocny jest ten problem z githubem ), oto jak to rozwiązać. Sztuczka polega na mapowaniu identyfikatora UID i GID użytkownika hosta na identyfikator UID i GID użytkownika wewnątrz kontenera.
Załóżmy, że zamierzam zamontować /home/breakds/projects
dokładnie w tym samym miejscu w kontenerze. Katalog zewnętrzny jest własnością użytkownika breakds
, którego identyfikator UID i GID to 1000
.
Następnie utworzyłem użytkownika w kontenerze o nazwie debian
, którego identyfikator użytkownika i identyfikator gid również się zdarzyło 1000
(ponieważ jest to pierwszy użytkownik inny niż root). Następnie utworzę (lxc) profie na hoście przez
lxc profile edit breakds
A poniżej jest treść profilu (uważam, że jest w formacie 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
Następnie zastosuj ten profil do tego kontenera na stałe:
$ lxc profile apply <my container> breakds
To powinno załatwić sprawę.
UWAGA : Należy pamiętać, że przed przejściem do tego profilu upewnij się, że wszystkie katalogi lub pliki, których właścicielem / grupą jest debian, powinny zostać usunięte (i prawdopodobnie ponownie utworzone po zmianie). Wynika to z faktu, że po mapowaniu UID i GID ich własność stanie się nieważna. Początkowo myślałem, ponieważ po prostu mapuję 1000 na 1000 wszystko powinno być w porządku, ale myślę, że coś tu przegapiłem i byłoby wspaniale, gdyby ktoś mógł doradzić, jak rozwiązać ten problem bez włamania.