Есть ли способ сделать файл доступным из всех контейнеров LXC? У меня есть база данных SQLite, которой я хочу поделиться со всеми своими контейнерами, возможно ли это?
Глобальный файл для контейнеров LXC?
Ответы (1)
Очень просто. Используйте привязку монтирования.
Вот пример.
Сначала создайте каталог для хранения файлов, которыми вы хотите поделиться на хост-компьютере.
mkdir /var/shared
Далее нам нужно создать каталог в контейнерах, к которому мы можем подключиться. Я использую местоположения по умолчанию в Ubuntu и имею 2 контейнера. Один с именем «test1», а другой с именем «test2».
mkdir /var/lib/lxc/test1/rootfs/var/shared
mkdir /var/lib/lxc/test2/rootfs/var/shared
mkdir /var/lib/lxc/<lxc container name here>/rootfs/var/shared
Вышеуказанные команды являются необязательными. Вы можете использовать любой подкаталог в контейнере. Я говорю "/var/shared".
Дальше делаем:
mount -o bind /var/shared /var/lib/lxc/test1/rootfs/var/shared
mount -o bind /var/shared /var/lib/lxc/test2/rootfs/var/shared
Чтобы сделать это постоянным при перезагрузке хоста, сделайте следующее.
# vi /etc/fstab
Добавьте следующее
/var/shared /var/lib/lxc/test1/rootfs/var/shared none rw,bind 0 0
/var/shared /var/lib/lxc/test2/rootfs/var/shared none rw,bind 0 0
Еще раз замените test1 и test2 контейнерами с правильными именами.
Все, что помещено в каталог /var/shared, будет доступно для всех контейнеров, у которых есть монтирование. Но поскольку UID и GID могут быть разными для каждого подконтейнера, вам может потребоваться chmod 666, чтобы что-то читалось/записывалось необходимыми пользователями каждого контейнера.
Пожалуйста, оставьте комментарий, если вам нужны дополнительные объяснения или помощь. -Откровенный