Machine: Exportar / importar máquinas

Criado em 6 dez. 2014  ·  67Comentários  ·  Fonte: docker/machine

Algo assim deve funcionar para máquinas de transferência:

 $ machine export test | ssh anotherhost machine import

(Talvez pudéssemos usar machine inspect ?)

kinenhancement

Comentários muito úteis

Ao criar uma máquina, você só pode usá-la e gerenciá-la em um único computador. Você pode querer:

1) faça backup de seus hosts
2) transferi-los para outro computador
3) compartilhe-os com um membro da equipe

Todos 67 comentários

Qual é o ganho com este? O objetivo de usar máquina da minha perspectiva é configurar uma máquina simples com docker nela (sem coisas sofisticadas ou coisas personalizadas). Com isso em mente, criar ou exportar-> importar uma máquina é exatamente o mesmo e não me traz nenhum benefício.

Ao criar uma máquina, você só pode usá-la e gerenciá-la em um único computador. Você pode querer:

1) faça backup de seus hosts
2) transferi-los para outro computador
3) compartilhe-os com um membro da equipe

Devemos ter um comando drop para que possamos remover a máquina da lista sem encerrá-la? Acho que pode ser útil depois que algumas máquinas forem exportadas e transferidas para outro computador.

O que exatamente o arquivo salvo conterá? ie; Ele conterá o token para se conectar ao daemon?

Idealmente, deve haver algo para gerenciar computadores / pessoas para ter acesso ao host. Pensando na linha de um token único, que pode ser conectar um novo computador a um host existente.

@bfirsh @waitingkuo Este parece ser um recurso realmente útil que

Qualquer motivo, a implementação (# 29) parece ter parado. Algo que eu possa fazer para tentar hepatite?

+1 seria incrível

+1

+1

+1

Criamos uma ferramenta que usamos nós mesmos, para facilitar a exportação de máquinas docker. Basicamente, ele exporta todas as chaves SSH dos certificados. O feedback é bem-vindo!

https://github.com/blackbeardapp/docker-machine-export

pode ser um exagero, mas algo como um registro de máquina docker seria incrível!

Atualmente, estamos usando um repositório git para compartilhar as configurações do docker, o problema é que alguns de nós temos máquinas virtuaisbox e isso é o lado negativo

@kevinsimper como você os importa de volta?

Esse problema inclui a ideia de compartilhar clusters de enxame entre desenvolvedores?

@saada Acho que cobre apenas o compartilhamento de credenciais , não a configuração do cluster.
Seria incrível ter essa habilidade na máquina.
Atualmente só conheço https://github.com/efrecon/machinery e https://github.com/nathanleclaire/moby

+1

Estou procurando a capacidade de compartilhar máquinas entre usuários nos mesmos hosts.
E há uma solução alternativa para isso? Estou copiando toda a pasta ~/.docker/machine/ por enquanto

+1

+1

+1

+1

+1

+1

+1

+1

+1

Acho que a melhor maneira de mostrar sua intenção é clicar em Subscribe (no lado direito Notificações )

Eu escrevi um script de importação / exportação que você pode usar até que esse recurso seja implementado nativamente. Espero que isto ajude :)

https://gist.github.com/schickling/2c48da462a7def0a577e

@schickling talvez algo a ser adicionado ao diretório "contrib" neste repositório? https://github.com/docker/machine/tree/master/contrib/completion

Infelizmente, não tenho tempo para fazer isso, mas sinta-se à vontade para usar isso!

+1

+1

+1

Eu escrevi mais um pequeno utilitário para exportar / importar máquinas docker. Estamos usando isso para nossa implantação de CI. https://www.npmjs.com/package/@mumbacloud/dmport

Obrigado a kevinsimper por https://github.com/blackbeardapp/docker-machine-export Usei sua ideia para exportar como JSON, o que o torna bastante portátil para ambientes de CI.

Eu também comecei a trabalhar em algum script de exportação / importação, o que eu realmente não entendo porque existem alguns arquivos duplicados em certs e na pasta específica da máquina machines/<myMachine> . Além disso, depois de ajustar os caminhos em config.json para alguns caminhos personalizados fora de .docker/machine/machines... , observei que o docker ainda espera que alguns certs / pems / keys estejam localizados nessa pasta

Alguém pode recomendar alguma documentação sobre o que deveria estar e onde realmente?

Parece que os desenvolvedores Node.js estão usando isso ativamente (e reescrevendo suas próprias soluções). Este eu encontrei no Twitter

https://www.npmjs.com/package/machine-share

Compartilhando a configuração da máquina Docker:

npm install -g machine-share
machine-export <machine-name>
machine-import <machine-name>.zip

Esse mesmo pacote de nó (conforme mencionado por @StefanScherer ) tem scripts de shell também se você não tiver o Node instalado.

https://github.com/bhurlow/machine-share/blob/master/export.sh
https://github.com/bhurlow/machine-share/blob/master/import.sh

Esta é uma solução alternativa, entretanto, docker-machine deve lidar com isso e, idealmente, fornecer um certificado exclusivo por desenvolvedor / usuário (para que a revogação seja possível).

o problema que estou tendo com os scripts de exportação / importação atuais é que eles sobrescreverão os arquivos existentes em ~/.docker/machine/certs , não é?

só posso falar pelo dmport, ele sobrescreverá os arquivos se eles existirem.

não é um problema para nós, porque o usamos em um dock ci que
não tem nada para sobrescrever, pois é um novo contêiner em cada
implantar.

Estou planejando limpar o dmport em breve, posso adicionar um sinalizador que impedirá
sobrescrever arquivos existentes, se isso ajudar
Em 1º de junho de 2016, 01h54, "Max Bruchmann" [email protected] escreveu:

o problema que estou tendo com os scripts de exportação / importação atuais é que eles
irá sobrescrever os arquivos existentes em ~ / .docker / machine / certs, não é?

-
Você está recebendo isso porque comentou.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/docker/machine/issues/23#issuecomment -222932695 ou mudo
o segmento
https://github.com/notifications/unsubscribe/ADIV-3T7FEa9CJvn_UdTb9AeQfwI3lkCks5qHUjegaJpZM4DFGT5
.

+1

Estamos usando um contêiner docker para esta tarefa - o que mais 😄

A ideia também é ter o mesmo ambiente (por exemplo, caminhos de configuração de certificados) para todos os usuários, montado como um volume de host. Você pode usar docker-machine , docker-compose e docker em contêineres criados a partir de roj. E você pode passar a pasta de dados como um zip por e-mail ou colocá-la em um repositório git privado.

+1

Não tenho certeza se meu caso de uso é igual ao de outros - criei algumas máquinas diferentes para finalidades diferentes e quero fazer backup de sua existência e configuração (secundária). Eu prefiro ter apenas alguns arquivos de texto simples que são usados ​​para recriar as caixas.

https://www.npmjs.com/package/machine-share não parece respeitar meu MACHINE_STORAGE_PATH. o script de schickling faz backup de alguns arquivos binários grandes (por exemplo, boot2docker.iso). https://www.npmjs.com/package/@mumbacloud/dmport gerou alguns erros.

Também queremos essa funcionalidade, criamos uma máquina em gcloud usando docker-machine para desenvolvimento e quero permitir que meu colega de trabalho execute no contêiner e visualize os logs.

Na verdade, estou surpreso que isso ainda não seja compatível. Meu exemplo é que criei um cluster docker swarm no Azure do meu laptop (sem pensar nisso até o fim) e agora quero que outros desenvolvedores possam gerenciar o cluster, então criei uma VM compartilhada no Azure que todos possam compartilhar. Instalei docker-machine e agora preciso importar as máquinas do meu laptop para a nossa jump box no Azure.

@jcrben Oi, que tal postar um problema completo no compartilhamento de máquina , sobre MACHINE_STORAGE_PATH?

Recentemente, revi o trabalho de bhurlow e estou curioso para ver se algo quebra

@jcrben Você também tentou https://github.com/dmstr/docker-roj? ... Estou apenas curioso.

Pessoas, pelo amor de todas as coisas adequadas, por favor 👍 o OP e não como um comentário discreto. O spam "+1" distrai a conversa.

FYI: # 3212

@lnshi Acho que o problema de importar um servidor docker existente com docker-machine create -d generic ... é que ele recria certificados e reinicia o Docker, portanto, não é apropriado para um cenário de produção / trabalho em equipe.

@pedrodevoto Eu sei, acabei de mencionar esses problemas, já que o ppl discutiu muito sobre isso.
Por enquanto, não acho que haja uma solução adequada ainda.

@ntwrkguru ainda, torna a questão relevante e viva. Não há notificação sobre emojis.

Este problema tem quase 4 anos, duvido que mais alguns comentários +1 tornem repentinamente uma prioridade.

@ntwrkguru Contanto que os desenvolvedores do docker classifiquem os problemas por 👍, isso deve estar em seu radar. É a segunda questão mais votada no momento. Portanto, manter o 👍 vindo garantirá que ele permaneça no topo.

Bem, não sei como a equipe do docker prioriza os problemas, mas aposto que eles também têm clientes pagantes, que aposto que sempre virão primeiro, antes de examinar as solicitações de recursos da comunidade pública.

O mesmo: https://github.com/docker/machine/issues/1328 ?

Estou apenas me acostumando ao docker e construí meu primeiro host usando docker-machine. Agora, um dia depois, estou tentando me conectar ao meu host docker usando uma estação de trabalho diferente ... Surpreso em ver que isso não é possível, pelo menos não sem algumas grandes dores de cabeça. Parece ser um recurso essencial para permitir que as equipes gerenciem hosts ...

Isso porque a docker-machine nunca foi projetada para ser uma ferramenta de equipe. É importante para um indivíduo criar facilmente VMs que instalam automaticamente o docker e configuram certificados TLS do dockerd para gerenciamento cli remoto.

Se você está tentando construir e implantar ambientes docker para equipes, provavelmente desejará usar uma ferramenta diferente.

@BretFisher e quais ferramentas seriam? Não que eu queira usá-lo para equipes, apenas de 3 estações de trabalho diferentes ...

Um dos grandes benefícios da docker-machine é que ela configura o TLS no mecanismo docker para gerenciamento remoto de cli.

Hoje o Docker Engine 18.09 foi lançado e com ele um ótimo novo recurso que permite gerenciamento cli remoto usando tunelamento SSH (de algum tipo) e é uma abordagem IMO muito melhor para nós, sem a necessidade de RBAC cheio do docker engine. Para aqueles que usam docker-machine simplesmente para facilitar o gerenciamento remoto, recomendo verificar isso em 18.09. Tanto o servidor docker quanto o cliente precisam estar em 18.09 e, desde que você possa fazer o SSH em, pode usar o cli remotamente.

O capitão do Docker Luc Juggery fez um rápido artigo sobre isso . Espero que se torne minha maneira padrão de usar o docker remotamente.

Eu entendo o que você está dizendo @BretFisher , mas seria bom tê-lo na docker-machine, já que mantém o controle dos controles remotos de qualquer maneira. Se vou gerenciá-los por SSH, provavelmente nem me incomodarei em usar docker-machine para implantá-los e, em vez disso, usar o Ansible. Docker-machine é outra ferramenta que poderia ser ótima, mas é relegada ao medíocre devido à falta de desenvolvimento.

@adilinden para as opções de um único usuário incluem:

  1. sincronizar ~/.docker/machine/machines entre essas máquinas em um repositório git privado e / ou criptografado. Você também pode precisar de ~/.docker/machine/certs , não tenho certeza. Ele precisa ser razoavelmente seguro, pois está armazenando certificados privados.

  2. Escolha um AMI, Droplet, etc. que já tenha o docker instalado e implante-os. Em seguida, use o novo recurso SSH 18.09 para controlar remotamente o mecanismo do docker.

  3. Experimente uma das muitas ferramentas que exportam / importam os diretórios de dados da máquina que listei acima.

@BretFisher Eu realmente gosto do # 2, parece a melhor opção de longe para o meu cenário, pois todos os botões e botões já estão no lugar para isso. A troca de hosts também parece trivial, pois é simplesmente definir uma única variável de ambiente.

Agora, apenas para descobrir como fazer com que o Docker para Mac seja 18.09 em vez de 18.06.1-ce-mac73 (26764).

@ntwrkguru docker-machine é ótimo para máquinas únicas ou configurações pessoais ou para alguém que precisa apenas de aproximadamente 10 servidores no máximo, mas se você já tentou gerenciar mais de 10 servidores com ele, verá seus limites imediatamente. Eu não diria que é devido à falta de desenvolvimento, mas sim "fora do escopo" dos objetivos originais das ferramentas.

No SSH, você não usaria ansible neste caso, o que estou dizendo é que, uma vez que você implantou qualquer servidor docker (ansible ou outro) que execute 18.09+, contanto que você tenha permissão SSH para esse servidor, você agora pode fazer algo como:

docker -H ssh://[email protected] run -p 80:80 nginx
ou
DOCKER_HOST=ssh://[email protected] docker system prune

Para controlar esse motor remotamente sem qualquer configuração ou configuração especial. Ser capaz de exportar um envvar e, em seguida, executar vários comandos nesse mecanismo (sem envolvê-los em ansible, etc.) é muito útil.

@adilinden o lançamento do Linux acabou de ser lançado hoje, então você precisará dar às equipes alguns dias ou uma semana para lançar todos os produtos downstream que o usam :). Se você quiser hoje , use a versão edge, que tem o beta 18.09 e funciona bem para mim no Mac.

Admito que não mexi na docker-machine há vários anos. Eu tenho 4 servidores restantes executando o mecanismo Docker simples.

Então, qual é o benefício entre docker -H ssh://[email protected] run -p 80:80 nginx e ssh://[email protected] docker run -p 80:80 nginx ?

[editar] Não ser argumentativo; Estou me perguntando se há um benefício claro.

@ntwrkguru Posso construir a partir de um arquivo Docker em minha estação de trabalho usando o comando docker -H ssh://[email protected] . . Enquanto o mesmo falha (como esperado) usando ssh -luser 10.10.10.10 docker build .

Apenas para informação, também pode usar ssh para encaminhamento de socket. Por https://medium.com/@dperny/forwarding -the-docker-socket-over-ssh-e6567cfab160, mas com uma ligeira modificação.

Em uma sessão de terminal, execute

ssh -nNT -L $(pwd)/docker.sock:/var/run/docker.sock -l user 10.10.10.10

Em outra corrida

docker -H "unix:///$(pwd)/docker.sock" run -p 80:80 nginx

ou

export DOCKER_HOST="unix:///$(pwd)/docker.sock"
docker run -p 80:80 nginx

Eu tive o mesmo problema e criei scripts de shell para fazer o backup e a restauração:
https://github.com/usr42/docker-machine-backup

Apenas os dados realmente necessários são armazenados em backup. Por exemplo, nenhum arquivo iso está dentro do backup.

Esta página foi útil?
0 / 5 - 0 avaliações