Я создал lxc контейнер легко с инструментами LXD однако, я не мог найти способ автоматически запустить его на перезагрузке. (Ubuntu 15.04)
Для LXC это сказано то добавление lxc.start.auto = 1
к контейнерной конфигурации был бы достаточно однако, я не мог найти файл конфигурации для контейнера созданным с LXD. Я попробовал
lxc config set my_machine raw.lxc "lxc.start.auto=1"
без любой удачи. Конфигурация сохраняется, но контейнер не запускался... Какие-либо идеи?
Я спросил самих 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
Это несколько месяцев спустя теперь, и автоначало (в течение некоторого времени теперь) поддержано в самом lxd. Вы можете всего
lxc init ubuntu u1
lxc config set u1 boot.autostart true
Теперь u1, автоначнется на каждой перезагрузке.
На основе официальной документации здесь запуск контейнера 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 и стандарт человечности пакеты.
Дальнейшие источники (не связанный в другом месте):