Как я открываю существующий контейнер LXD?

Мне установили Ubuntu 16.04, xfce рабочий стол если это имеет значение. У меня есть установленный LXD, с моими изображениями и контейнерами на моем большом втором диске, с символьными ссылками на упомянутые изображения и контейнеры, настроенные в /var/lib/lxd/. Все работает как ожидалось.

Я теперь переустановил Ubuntu 16.04 на новом диске, рабочий стол Помощника если это имеет значение. Я установил LXD и создал символьные ссылки (в /var/lib/lxd) к моим изображениям и папкам контейнеров на моем большом диске.

Ни мои изображения, ни контейнеры не перечислены при использовании lxc, список (так не может запустить их и использовать их).

Какие-либо указатели на том, что я должен сделать, чтобы заставить мой недавно установленный LXD использовать мои существующие ранее изображения и контейнеры?

5
задан 8 May 2017 в 06:42

2 ответа

Для кого-либо заинтересованного, недостающая часть загадки была то, что я должен был снова использовать существующую lxd базу данных, lxd.db.

Так шаги для меня для использования моего существования ранее контейнеры LXD на новой установке являются:-

Установка LXD

sudo apt-get install lxd

Удалите containers и images каталоги

sudo rm -rf /var/lib/lxd/containers
sudo rm -rf /var/lib/lxd/images

Создайте символьные ссылки на мое существование ранее containers и images каталоги.

sudo ln -s /media/sda10/lxd/containers /var/lib/lxd/containers
sudo ln -s /media/sda10/lxd/images /var/lib/lxd/images

Смонтируйте мой исходный раздел установки и скопируйте lxd.db файл с моей исходной установки на мою новую установку

sudo cp /mnt/var/lib/lxd/lxd.db /var/lib/lxd/lxd.db

Мои контейнеры теперь обнаруживаются, когда я перечисляю их и работаю как ожидалось.

ПРИМЕЧАНИЕ: у Меня есть несколько установок на нескольких разделах, и я прыгаю лягушка между новыми версиями Ubuntu, поскольку они становятся доступными, и не стирают более старую версию, пока я не счастлив. Это действительно легко сделать и только что стало второй натурой.

Я знаю, что это не обычная практика, но она (снова) убралась подобру-поздорову в этом случае. Для тех, кто не делает этого, делая резервное копирование lxd.db файл рекомендовался бы.

РЕДАКТИРОВАНИЕ: Дополнительные материалы для чтения в https://insights.ubuntu.com/2016/04/13/lxd-2-0-remote-hosts-and-container-migration-612/показывают, что это также очень просто в использовании удаленный хост LXD, и просто переместите контейнеры между хостами.

Это не решение для меня в этом конкретном экземпляре, но это - очень хорошее чтение, показывающее очень простой способ переместить контейнеры.

2
ответ дан 23 November 2019 в 10:35

Так как мои комментарии содержат некоторые опечатки, я буду резюмировать несколько предложений для импорта существующего контейнера (чье устройство хранения данных доступно) в новый DB.

Во-первых, существуют (возможно) более легкие альтернативы, если Вы хотите скопировать весь экземпляр LXD (в основном беря устройство хранения данных всех контейнеров, плюс DB от /var/lib/lxd). Кроме того, если старый экземпляр все еще работает и достижимый сетью, более собственный подход должен определить его как удаленное, как описано в Удаленных хостах и контейнерной главе миграции в замечательном понимании LXD 2.0 Ubuntu: ряд Сообщения в блоге.


Теперь, один подход описал в другой главе того ряда (снова, только выполнимый, если старый экземпляр все еще работает), должен сделать изображение из существующего контейнерного использования

lxc publish <my-container>@<snapshot> <my-image-name>

затем экспортируйте его в tarballs с

lxc image export <my-image-name> /path/to/directory

Получающийся tarballs может быть импортирован с

lxc image import <metadata-tarball> <rootfs-tarball> --alias <my-image-name>

Как OP заявила в комментариях, это - довольно мало работы. То, что более серьезно, - то, что это перестало работать, если по некоторым причинам Вы не можете выполнить старый экземпляр.

С версии 2.7 LXD хранит a backup.yaml файл в устройстве хранения данных каждого контейнера (в /var/lib/lxd/containers/<my-container>) который позволяет импортировать контейнер из копии, с помощью lxd import (см. Стратегии резервного копирования LXD и эту проблему GitHub). Отметьте lxd; это отличается от lxc image import.

На основе Страницы новостей LXD я предполагаю, что каждый делает это путем простого перемещения устройства хранения данных контейнера в /var/lib/lxd/containers каталог и выполнение

lxd import <my-container>

Однако, поскольку Гостеприимные официальные репозитории в настоящее время предлагают версию 2.0.9 LXD, я не протестировал ту последнюю часть.

0
ответ дан 23 November 2019 в 10:35

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

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