Добавление общего каталога хоста к Контейнеру LXC/LXD

Я экспериментировал с LXC/LXD на Ubuntu 14.04, и это все работает отлично. Я просто должен выяснить, как получить общие каталоги, работающие между моей хост-машиной и контейнером, таким образом, я могу канава Virtualbox раз и навсегда.

Я видел эту страницу: https://wiki.gentoo.org/wiki/LXD

Который предоставляет инструкции, но я просто продолжаю получать ошибки.

Кто-либо знает о каких-либо простых, четких указаниях получить эту работу? Любая справка очень ценится.

19
задан 28 October 2015 в 05:39

5 ответов

У меня теперь есть работа, безопасное решение этой проблемы, с помощью профилей LXD для обработки отображения между UID и GID в контейнере и на хосте.

А очень полезная суть может быть найдена здесь:

https://gist.github.com/bloodearnest/ebf044476e70c4baee59c5000a10f4c8

0
ответ дан 23 November 2019 в 01:59

Можно присвоиться дополнительный устройства к контейнеру, и они могут быть доступными для хоста папками.

$ lxc config ## display help
...
lxc config device add [<remote>:]<container> <device> <type> [key=value...]
    Add a device to a container.
...

Примечание, которое <device> является просто произвольным именем, которое Вы присваиваете, который будет использоваться в качестве идентификатора для последующего управления устройствами.

, Например, для монтирования папки "./размещало" хоста как "/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

Далее отмечает, что этот подход, вероятно, работает лучше всего, если Вы обычно действуете в контейнере в качестве некорневого пользователя, такой, как будто Вы присоединяете с...

lxc exec zesty -- su --login ubuntu
3
ответ дан 23 November 2019 в 01:59

Вот обновленный ответ на этот вопрос.

Монтируют папку хоста /var/www как /var/test в контейнере.

lxc config device add mycontainer vartest disk source=/var/www path=/var/test
4
ответ дан 23 November 2019 в 01:59

На основе превосходный ответ ph0t0nix, я предлагаю следующий пошаговый подход для своего сервера Ubuntu 18.04:

  1. В хосте определяют UID владельца rootfs:

    sudo ls -l /var/lib/lxd/storage-pools/lxd/containers/webserver/rootfs  
    id -u root   → 100000
  2. В контейнере определяют UID человечности (т.е. пользователь в контейнере):

    id -u ubuntu   → 1000
  3. Создают совместно используемую папку в хосте и добавляют его к контейнеру:

    lxc config device add webserver mydevicename disk path=/home/share_on_guest source=/home/share_on_host
    
  4. Корректируют в хосте UID совместно используемой папки (UID = хост UID + гость UID):

    sudo chown 101000:101000 /home/share_on_host
    
  5. Гость (пользовательская человечность) имеет теперь доступ к совместно используемой папке и может корректироваться в контейнерном доступе к совместно используемой папке с помощью chmod.

1
ответ дан 23 November 2019 в 01:59

Инструкции относительно https://wiki.gentoo.org/wiki/LXD, что Вы упоминаете, корректны, но, возможно, нуждаются в немного большем количестве объяснения.

На хосте Вы сначала проверяете владение каталога, в котором хранятся контейнерные данные. Выполненный

sudo ls -l /var/lib/lxd/containers

и проверьте владельца контейнера, с которым требуется совместно использовать каталог. В моем случае uid и gid оба были 100000.

Затем, используйте их для изменения владения каталога, который Вы хотите совместно использовать:

sudo chown 100000:100000 /tmp/share_on_host

Совместно используйте каталог с контейнером в способе, которым Вы указали в своем комментарии:

lxc config device add mycontainer sharedtmp disk \
                  path=/tmp/share_on_guest source=/tmp/share_on_host

Теперь, в контейнере, Вы будете видеть что каталог /tmp/share_on_guest (Я не советовал бы для монтирования каталога как /tmp потому что это используется системой для другого материала и имеет специальные полномочия), принадлежит корню. Отсюда на Вас может использовать chown в контейнере для изменения владения на соответствующее uid и gid для Вашего пользователя в контейнере.

Как примечание стороны, после изменения владения в контейнере к, например, пользователе с uid 33 Вы будете видеть на хосте что uid существует теперь 100033, который имеет общий смысл.

21
ответ дан 23 November 2019 в 01:59

Другие вопросы по тегам:

Похожие вопросы: