Не может автоматически запустить контейнеры LXC, созданные с LXD

Я создал lxc контейнер легко с инструментами LXD однако, я не мог найти способ автоматически запустить его на перезагрузке. (Ubuntu 15.04)

Для LXC это сказано то добавление lxc.start.auto = 1 к контейнерной конфигурации был бы достаточно однако, я не мог найти файл конфигурации для контейнера созданным с LXD. Я попробовал

lxc config set my_machine raw.lxc "lxc.start.auto=1"

без любой удачи. Конфигурация сохраняется, но контейнер не запускался... Какие-либо идеи?

5
задан 5 May 2015 в 17:31

3 ответа

Я спросил самих lxc/lxd разработчиков, и кажется, что не возможно сделать это с конфигурацией, если lxd используется для создания контейнеров. Это еще не реализовано, но запланировало, они говорят...

lxd несколько отличается от lxc сценариев: т.е. каталог по умолчанию для контейнеров /var/lib/lxd/lxc/ вместо /var/lib/lxc/, и контейнерные конфигурации сохранены в центральном sqlite дб вместо некоторого файла конфигурации на контейнер.

, Таким образом, я должен был создать systemd задание путем создания файла: /etc/systemd/system/multi-user.target.wants/lxd-autostart.service с этим содержанием:

[Unit]
Description=Start lxc containers created with lxd
After=lxd.service
Requires=lxd.service

[Service]
ExecStartPre=/usr/local/bin/lxd-autostart-check.sh
ExecStart=/usr/bin/lxc start my_machine
Restart=on-failure

[Install]
WantedBy=multi-user.target

и /usr/local/bin/lxd-autostart-check.sh:

#!/bin/bash

for i in {1..10}
do
    echo "."
    [ -S /var/lib/lxd/unix.socket ] && exit 0
    sleep 1
done

echo "/var/lib/lxd/unix.socket not detected!"
exit 1
0
ответ дан 23 November 2019 в 08:59

Это несколько месяцев спустя теперь, и автоначало (в течение некоторого времени теперь) поддержано в самом lxd. Вы можете всего

lxc init ubuntu u1
lxc config set u1 boot.autostart true

Теперь u1, автоначнется на каждой перезагрузке.

6
ответ дан 23 November 2019 в 08:59

На основе официальной документации здесь запуск контейнера LXC был разработан с помощью выскочки. С 9 марта 2015 Ubuntu 15.04, измененного на systemd по умолчанию. Больше детали относительно влияния этого изменения и как переключиться от systemd до выскочки и назад снова доступен на эта страница.

Для проверки, чтобы видеть, использует ли система systemd по сравнению с выскочкой, можно протестировать путем издания команды sudo initctl version, которая возвратит выскочку, если выскочка обрабатывает init., другой полезный метод должен выпустить команду dpkg -S /sbin/init, которая скажет Вам, какой пакет установил его (в моем случае на 14,04, это - выскочка), Вы, можно найти более очень хорошие ответы о том, как сделать так от наших друзей в Unix & Linux. Более подробная информация относительно идентификация init системы также доступна.

, Чтобы видеть, автоматически запускает ли Ваш контейнер LXC при выскочке, как разработано, можно установить выскочка-sysv пакет, который удалит стандарт человечности и systemd-sysv (но не должен удалять ничто больше. Дайте разработчикам головы, если это делает!), и выполненный sudo обновляют-initramfs-u. После этого меню "Advanced options" личинки будет иметь соответствующий "Ubuntu с Linux... (systemd)" запись, где можно сделать одноразовую начальную загрузку с systemd.

можно вернуться назад к systemd установка systemd-sysv и стандарт человечности пакеты.

Дальнейшие источники (не связанный в другом месте):

https://unix.stackexchange.com/questions/196166/how-to-find-out-if-a-system-uses-sysv-upstart-or-systemd-initsystem

2
ответ дан 23 November 2019 в 08:59

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

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