Мне установили Ubuntu 16.04, xfce рабочий стол если это имеет значение. У меня есть установленный LXD, с моими изображениями и контейнерами на моем большом втором диске, с символьными ссылками на упомянутые изображения и контейнеры, настроенные в /var/lib/lxd/
. Все работает как ожидалось.
Я теперь переустановил Ubuntu 16.04 на новом диске, рабочий стол Помощника если это имеет значение. Я установил LXD и создал символьные ссылки (в /var/lib/lxd
) к моим изображениям и папкам контейнеров на моем большом диске.
Ни мои изображения, ни контейнеры не перечислены при использовании lxc, список (так не может запустить их и использовать их).
Какие-либо указатели на том, что я должен сделать, чтобы заставить мой недавно установленный LXD использовать мои существующие ранее изображения и контейнеры?
Для кого-либо заинтересованного, недостающая часть загадки была то, что я должен был снова использовать существующую 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, и просто переместите контейнеры между хостами.
Это не решение для меня в этом конкретном экземпляре, но это - очень хорошее чтение, показывающее очень простой способ переместить контейнеры.
Так как мои комментарии содержат некоторые опечатки, я буду резюмировать несколько предложений для импорта существующего контейнера (чье устройство хранения данных доступно) в новый 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, я не протестировал ту последнюю часть.