Копирование контейнеров lxd между хостами

Я установил 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 .

6
задан 23 February 2016 в 15:55
3 ответа

ʻ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:

  1. 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
     
  2. 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
     
  3. 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%
     
  4. 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
12
ответ дан 3 December 2019 в 00:03

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
ответ дан 3 December 2019 в 00:03

0_0 опубликовал хороший ответ, но мне пока не разрешено комментировать, поэтому я просто отправлю его измененный ответ.

Прежде всего lxc publish --force container_name --alias image_name остановит контейнер и перезапустит его, но OP не хотел останавливать контейнер.

Сначала вы должны сделать снимок с помощью lxc snapshot имя_контейнера имя_снимка

Затем вы можете опубликовать образ с помощью lxc publish container_name / snapshot_name --alias image_name

Теперь просто следуйте остальным его инструкциям.

4
ответ дан 3 December 2019 в 00:03

Теги

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