У меня установлен Ubuntu 16.04, рабочий стол xfce для чего он стоит. У меня установлен LXD с моими изображениями и контейнерами на моем большом втором диске с символическими ссылками на указанные изображения и контейнеры, сконфигурированные в /var/lib/lxd/. Все работает как ожидалось.
Теперь я снова установил Ubuntu 16.04 на новый диск, настольный компьютер Mate, для чего он стоит. Я установил 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 по мере их появления и 't стереть более старую версию, пока я не буду счастлив. Это действительно легко сделать и только что стало второй натурой.
Я знаю, что это не обычная практика, но она (снова) спасла мой бекон по этому поводу. Для тех, кто этого не делает, рекомендуется сделать резервную копию файла lxd.db.
EDIT: Дальнейшее чтение на https://insights.ubuntu.com/2016/04/13/ lxd-2-0-remote-hosts-and-container-migration-612 / показывает, что также очень просто использовать удаленный хост LXD и просто перемещать conatiners между хостами.
Это не решение для меня, в данном конкретном случае, но это очень хорошее чтение, показывающее очень простой способ переноса контейнеров.
Для любого заинтересованного, недостающего фрагмента головоломки было то, что мне пришлось повторно использовать существующую базу данных 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 по мере их появления и 't стереть более старую версию, пока я не буду счастлив. Это действительно легко сделать и только что стало второй натурой.
Я знаю, что это не обычная практика, но она (снова) спасла мой бекон по этому поводу. Для тех, кто этого не делает, рекомендуется сделать резервную копию файла lxd.db.
EDIT: Дальнейшее чтение на https://insights.ubuntu.com/2016/04/13/ lxd-2-0-remote-hosts-and-container-migration-612 / показывает, что также очень просто использовать удаленный хост LXD и просто перемещать conatiners между хостами.
Это не решение для меня, в данном конкретном случае, но это очень хорошее чтение, показывающее очень простой способ переноса контейнеров.
Для любого заинтересованного, недостающего фрагмента головоломки было то, что мне пришлось повторно использовать существующую базу данных 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 по мере их появления и 't стереть более старую версию, пока я не буду счастлив. Это действительно легко сделать и только что стало второй натурой.
Я знаю, что это не обычная практика, но она (снова) спасла мой бекон по этому поводу. Для тех, кто этого не делает, рекомендуется сделать резервную копию файла lxd.db.
EDIT: Дальнейшее чтение на https://insights.ubuntu.com/2016/04/13/ lxd-2-0-remote-hosts-and-container-migration-612 / показывает, что также очень просто использовать удаленный хост LXD и просто перемещать conatiners между хостами.
Это не решение для меня, в данном конкретном случае, но это очень хорошее чтение, показывающее очень простой способ переноса контейнеров.
Поскольку мои комментарии содержат некоторые опечатки, я приведу пару предложений по импорту существующего контейнера (чье хранилище доступно) в новую БД.
Во-первых, есть (возможно) более простые альтернативы если вы хотите скопировать весь экземпляр LXD (в основном, используя хранение всех контейнеров, плюс DB из /var/lib/lxd). Кроме того, если старый экземпляр по-прежнему работает и доступен по сети, более привычным подходом является определение его как удаленного, как описано в разделе «Удаленные хосты и перемещение контейнеров» в замечательной серии публикаций Ubuntu Insights LXD 2.0: Blog. [!d1 ]
Теперь один подход, описанный в Удаленные хосты и миграция контейнеров (опять же, возможно только в том случае, если старый экземпляр все еще запущен) заключается в создании образа существующего контейнер, используя
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 хранит файл backup.yaml внутри хранилища каждого контейнера (в /var/lib/lxd/containers/<my-container>), что позволяет импортируя контейнер из копии, используя lxd import (см. Стратегии резервного копирования LXD и эту LXD 2.0: Серия сообщений в блоге ). Обратите внимание на lxd; это отличается от lxc image import.
Основываясь на стратегиях резервного копирования LXD , я полагаю, что это просто перемещает содержимое контейнера в каталог /var/lib/lxd/containers и запускает
lxd import <my-container>
Однако, поскольку официальные репозитории Xenial в настоящее время предлагают версию 2.0.9 LXD, я не тестировал эту последнюю часть.
Поскольку мои комментарии содержат некоторые опечатки, я приведу пару предложений по импорту существующего контейнера (чье хранилище доступно) в новую БД.
Во-первых, есть (возможно) более простые альтернативы если вы хотите скопировать весь экземпляр LXD (в основном, используя хранение всех контейнеров, плюс DB из /var/lib/lxd). Кроме того, если старый экземпляр по-прежнему работает и доступен по сети, более привычным подходом является определение его как удаленного, как описано в разделе «Удаленные хосты и перемещение контейнеров» в замечательной серии публикаций Ubuntu Insights LXD 2.0: Blog.
Теперь один подход, описанный в Удаленные хосты и миграция контейнеров (опять же, возможно только в том случае, если старый экземпляр все еще запущен) заключается в создании образа существующего контейнер, используя
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 хранит файл backup.yaml внутри хранилища каждого контейнера (в /var/lib/lxd/containers/<my-container>), что позволяет импортируя контейнер из копии, используя lxd import (см. Стратегии резервного копирования LXD и эту LXD 2.0: Серия сообщений в блоге ). Обратите внимание на lxd; это отличается от lxc image import.
Основываясь на стратегиях резервного копирования LXD , я полагаю, что это просто перемещает содержимое контейнера в каталог /var/lib/lxd/containers и запускает
lxd import <my-container>
Однако, поскольку официальные репозитории Xenial в настоящее время предлагают версию 2.0.9 LXD, я не тестировал эту последнюю часть.
Поскольку мои комментарии содержат некоторые опечатки, я приведу пару предложений по импорту существующего контейнера (чье хранилище доступно) в новую БД.
Во-первых, есть (возможно) более простые альтернативы если вы хотите скопировать весь экземпляр LXD (в основном, используя хранение всех контейнеров, плюс DB из /var/lib/lxd). Кроме того, если старый экземпляр по-прежнему работает и доступен по сети, более привычным подходом является определение его как удаленного, как описано в разделе «Удаленные хосты и перемещение контейнеров» в замечательной серии публикаций Ubuntu Insights LXD 2.0: Blog.
Теперь один подход, описанный в Удаленные хосты и миграция контейнеров (опять же, возможно только в том случае, если старый экземпляр все еще запущен) заключается в создании образа существующего контейнер, используя
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 хранит файл backup.yaml внутри хранилища каждого контейнера (в /var/lib/lxd/containers/<my-container>), что позволяет импортируя контейнер из копии, используя lxd import (см. Стратегии резервного копирования LXD и эту LXD 2.0: Серия сообщений в блоге ). Обратите внимание на lxd; это отличается от lxc image import.
Основываясь на стратегиях резервного копирования LXD , я полагаю, что это просто перемещает содержимое контейнера в каталог /var/lib/lxd/containers и запускает
lxd import <my-container>
Однако, поскольку официальные репозитории Xenial в настоящее время предлагают версию 2.0.9 LXD, я не тестировал эту последнюю часть.