Я экспериментировал с LXC/LXD на Ubuntu 14.04, и это все работает отлично. Я просто должен выяснить, как получить общие каталоги, работающие между моей хост-машиной и контейнером, таким образом, я могу канава Virtualbox раз и навсегда.
Я видел эту страницу: https://wiki.gentoo.org/wiki/LXD
Который предоставляет инструкции, но я просто продолжаю получать ошибки.
Кто-либо знает о каких-либо простых, четких указаниях получить эту работу? Любая справка очень ценится.
У меня теперь есть работа, безопасное решение этой проблемы, с помощью профилей LXD для обработки отображения между UID и GID в контейнере и на хосте.
А очень полезная суть может быть найдена здесь:
https://gist.github.com/bloodearnest/ebf044476e70c4baee59c5000a10f4c8
Можно присвоиться дополнительный устройства к контейнеру, и они могут быть доступными для хоста папками.
$ 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
Вот обновленный ответ на этот вопрос.
Монтируют папку хоста /var/www
как /var/test
в контейнере.
lxc config device add mycontainer vartest disk source=/var/www path=/var/test
На основе превосходный ответ ph0t0nix, я предлагаю следующий пошаговый подход для своего сервера Ubuntu 18.04:
В хосте определяют UID владельца rootfs:
sudo ls -l /var/lib/lxd/storage-pools/lxd/containers/webserver/rootfs
id -u root → 100000
В контейнере определяют UID человечности (т.е. пользователь в контейнере):
id -u ubuntu → 1000
Создают совместно используемую папку в хосте и добавляют его к контейнеру:
lxc config device add webserver mydevicename disk path=/home/share_on_guest source=/home/share_on_host
Корректируют в хосте UID совместно используемой папки (UID = хост UID + гость UID):
sudo chown 101000:101000 /home/share_on_host
Гость (пользовательская человечность) имеет теперь доступ к совместно используемой папке и может корректироваться в контейнерном доступе к совместно используемой папке с помощью chmod
.
Инструкции относительно 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, который имеет общий смысл.