Do kontenera można przypisać dodatkowe urządzenia , które mogą być folderami dostępnymi dla hosta.
$ lxc config ## display help
...
lxc config device add [<remote>:]<container> <device> <type> [key=value...]
Add a device to a container.
...
Pamiętaj, że <device>
to tylko dowolna przypisana nazwa, która będzie używana jako identyfikator do późniejszego zarządzania urządzeniem.
Na przykład, aby zamontować folder hosta „./host” jako „/ mnt / host” w kontenerze ...
lxc config device add mycontainer vartest disk source=$(pwd)/host path=/mnt/host
Pozostaje jeden problem - jeśli chcesz, aby ten folder był zapisywalny zarówno przez hosta, jak i kontener, należy odpowiednio skonfigurować własność i uprawnienia. Komplikuje to domyślny tryb LXD, który wirtualizuje zakresy liczbowe dla wartości użytkowników i grup id
. Istnieje jednak proste rozwiązanie : ominąć tę wirtualizację, konfigurując kontener do działania z uprawnieniami równoważnymi z hostem ...
lxc config set <container> security.privileged true
Pełne konsekwencje tego podejścia dla bezpieczeństwa hosta są dla mnie niejasne, ale wydaje się, że wirtualizacja jest nieco „ograniczona”. Praktyczne ryzyko zależy od tego, jak i dlaczego będziesz używać pojemnika. Zobacz uwagi techniczne na https://insights.ubuntu.com/2017/06/15/custom-user-mappings-in-lxd-containers
Zwróć też uwagę, że to podejście prawdopodobnie działa najlepiej, jeśli normalnie operujesz w kontenerze jako użytkownik inny niż root, na przykład jeśli łączysz się z ...
lxc exec zesty -- su --login ubuntu
lxc config device add confexample sharedtmp disk path=/tmp source=/tmp/shared
. Ale patrząc na katalog w kontenerze, właściciel i grupa plików w nim są ustawione na „nobody” i „nogroup”, a mount jest tylko do odczytu.