Глобальный файл для контейнеров LXC?
Есть ли способ сделать файл доступным из всех контейнеров LXC? У меня есть база данных SQLite, которой я хочу поделиться со всеми моими контейнерами, это возможно?
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, чтобы иметь возможность считывать / записывать данные необходимыми пользователями каждого контейнера.
Пожалуйста, оставьте комментарий, если вам нужно дальнейшее объяснение или помощь. -Frank