Я установил lxd на два хоста ubuntu, которые могут связываться только через промежуточный сервер (на котором у меня нет прав su). Я создал контейнер на своем локальном хосте и теперь хочу загрузить контейнер на удаленный сервер.
Я проконсультировался с тестовым сценарием basic.sh в репозитории lxc / lxd, чтобы подтвердить, что я используя правильный подход (по пути я обнаружил, что неправильно понимаю изображения и контейнеры).
Я создал контейнер test на моем локальном хосте, установил в нем все необходимые компоненты, остановил его, опубликовал и выполнил следующие команды:
lxc image export test
Это дает мне архив 42cf01c53cb9e ... 83e3c48.tar.gz (здесь сокращено), как описано в документации (я использую lxc и lxd версий 2.0.0.beta3). Попытка импортировать это изображение на тот же хост через
lxc image import 42cf01c53cb9e...83e3c48.tar.gz --alias testimage
приводит к ошибке:
exit status 2 (tar: metadata.yaml: Not found in archive)
Скрипт basic.sh заставляет меня поверить, что я следовал правильным путем (за исключением tar.gz vs tar.xz descrepancY). Я могу экспортировать стандартные изображения и получить файл .xz (когда я получаю их с помощью lxd-изображений). Например,
lxd-images import ubuntu --alias ubuntu
lxc image export ubuntu
создает файл meta-ubuntu ... tar.xz и ubuntu ... tar.xz , который можно импортировать (на другом сервере) с помощью
lxc image import meta...tar.xz rootfs ubuntu...tar.xz --alias imported_ubuntu
Как копировать контейнеры между хостами?
Спасибо!
Редактировать: Я продолжил исследование и опубликовал свой тестовый контейнер, который создает его изображение. Затем я получаю файл .gz (без метаданных) при его экспорте. Если я захватываю метаданные из исходного изображения, я не могу запустить контейнер, хотя импорт больше не вызывает сбоев - я, очевидно, не знаю, что делаю. Перетаскивание изображения на второй хост с использованием подхода lxd remote: (после добавления хоста с использованием конфигурации lxd) не приводит к его появлению в списке изображений lxc .
ʻO ka hoʻokuʻu hope (non-beta) o lxd (v2.0) me he mea lā ua hoʻoholo ʻia i kaʻu pilikia. ʻO nā ʻanuʻu, i loaʻa paha i loko o nā palapala maikaʻi loa ma aneʻi , ʻo ia:
E paʻi i kahi kiʻi (me ka hoʻokū ʻole ʻana i ka ipu) ma ka mea mālama iā A;
kiʻi_name
Hoʻopuka ʻia ka ipu me ka manamana lima: d2fd708361 ... a125d0d5885
E lawe aku i ke kiʻi i kahi faila;
$ lxc kiʻi hoʻolilo kiʻi_name
Kuhi ʻia i dd2fd708361 ... a125d0d5885.tar.gz
E kope i ka faile e hoʻokipa iā B, a lawe mai;
$ lxc kiʻi kiʻi dd2fd708361 ... a125d0d5885.tar.gz --alias image_name
Ke hoʻololi nei i kiʻi: 100%
E neenee i ka ipu (mai ke kiʻi) ma ka mea hoʻokipa B;
$ lxc hoʻolana i image_name container_name
Ke hana nei i container_name
Hoʻomaka container_name
I kekahi mau hanana hiki i ke kauoha paʻi ke alakaʻi i ka hoʻokaʻawale x-tar-ball --- akā ʻelua mau ʻaoʻao i kākoʻo ʻia . E hoʻokomo wale i nā ʻikepili meta-ʻikepili a me nā rootfs me
lxc image import <metadata tarball> <rootfs tarball> --alias image_name
Wann Dir socat oder netcat oder gcc / python / perl / alles hutt wat op tcp lauschtere kann, da kënnt Dir och op den Zwëscher Server lauschteren an d'Verbindung weiderginn op deen aneren Host
0_0 опубликовал хороший ответ, но мне пока не разрешено комментировать, поэтому я просто отправлю его измененный ответ.
Прежде всего lxc publish --force container_name --alias image_name
остановит контейнер и перезапустит его, но OP не хотел останавливать контейнер.
Сначала вы должны сделать снимок с помощью lxc snapshot имя_контейнера имя_снимка
Затем вы можете опубликовать образ с помощью lxc publish container_name / snapshot_name --alias image_name
Теперь просто следуйте остальным его инструкциям.