Контейнеру можно назначить дополнительные устройства , которые могут быть папками, доступными для хоста.
$ lxc config ## display help
...
lxc config device add [<remote>:]<container> <device> <type> [key=value...]
Add a device to a container.
...
Обратите внимание, что <device>
это просто произвольное имя, которое вы назначаете, которое будет использоваться в качестве идентификатора для последующего управления устройством.
Например, чтобы смонтировать папку хоста "./host" как "/ mnt / host" в контейнере ...
lxc config device add mycontainer vartest disk source=$(pwd)/host path=/mnt/host
Остается одна проблема - если вы хотите, чтобы эта папка была доступна для записи как хостом, так и контейнером, необходимо соответствующим образом настроить владельца и разрешения. Это усложняется режимом LXD по умолчанию, который виртуализирует числовые диапазоны для id
значений пользователя и группы . Однако существует простое решение : обойти эту виртуализацию, настроив контейнер для работы с привилегиями, эквивалентными хосту ...
lxc config set <container> security.privileged true
В настоящее время мне неясны все последствия этого подхода для безопасности хоста, но, похоже, виртуализация несколько сдерживает их. Практический риск зависит от того, как и почему вы будете использовать контейнер. См. Технические примечания по адресу https://insights.ubuntu.com/2017/06/15/custom-user-mappings-in-lxd-containers.
Также обратите внимание, что этот подход, вероятно, работает лучше всего, если вы обычно работаете в контейнере как пользователь без полномочий root, например, если вы присоединяетесь с помощью ...
lxc exec zesty -- su --login ubuntu
lxc config device add confexample sharedtmp disk path=/tmp source=/tmp/shared
. Но, глядя на каталог контейнера, владелец и группа для файлов в нем установлены на «nobody» и «nogroup», и монтирование доступно только для чтения.