Instalei o lxd em dois hosts do Ubuntu que só podem se comunicar por meio de um servidor intermediário (no qual eu não tenho privilégios su). Eu criei um contêiner no meu localhost e agora deseja carregar o contêiner no servidor remoto.
Eu consultei o script de teste basic.sh no lxc / lxd repo para confirmar que estou usando a abordagem correta (descobri ao longo do caminho que eu estava entendendo mal imagens vs contêineres).
Eu criei um container test no meu localhost, instalei todos os itens necessários dentro dele, parei, publiquei e executei os seguintes comandos:
lxc image export test
Isso me dá um tarball 42cf01c53cb9e ... 83e3c48.tar.gz (abreviado aqui), conforme descrito na documentação (estou executando as versões lxc e lxd 2.0.0.beta3). Tentando importar essa imagem no mesmo host via
lxc image import 42cf01c53cb9e...83e3c48.tar.gz --alias testimage
produz o erro:
exit status 2 (tar: metadata.yaml: Not found in archive)
O script basic.sh me leva a acreditar que eu estava seguindo a rota correta (exceto a descriç˜ao tar.gz x tar.xz). Consigo exportar imagens padrão e obter um arquivo .xz (quando eu as obtenho usando imagens lxd). Por exemplo,
lxd-images import ubuntu --alias ubuntu
lxc image export ubuntu
produz um arquivo meta-ubuntu ... tar.xz e ubuntu ... tar.xz , que pode ser importado (em um servidor diferente) com
lxc image import meta...tar.xz rootfs ubuntu...tar.xz --alias imported_ubuntu
Como faço para copiar contêineres entre hosts?
Obrigado!
Edit: Eu investiguei mais e publiquei meu contêiner de teste, que cria uma imagem dele. Então eu recebo o arquivo .gz embora (sem os metadados) quando eu exporto. Se eu seqüestrar metadados da imagem original, então eu não posso começar o contêiner iniciado, embora a importação não trava mais em mim - eu obviamente não sei o que estou fazendo. Puxar a imagem para um segundo host usando a abordagem remote: do lxd (depois de adicionar o host usando a configuração lxd) não resulta na sua aparição na lista de imagens lxc .