Machine: Máquinas de exportación / importación

Creado en 6 dic. 2014  ·  67Comentarios  ·  Fuente: docker/machine

Algo como esto debería funcionar para transferir máquinas:

 $ machine export test | ssh anotherhost machine import

(¿Quizás podríamos usar machine inspect ?)

kinenhancement

Comentario más útil

Cuando crea una máquina, solo puede usarla y administrarla desde una sola computadora. Tu podrías querer:

1) haga una copia de seguridad de sus hosts
2) transferirlos a otra computadora
3) compártelos con un miembro del equipo

Todos 67 comentarios

¿Cuál es la ganancia con este? El objetivo de usar la máquina desde mi perspectiva es configurar una máquina simple con la ventana acoplable (sin cosas sofisticadas o personalizadas). Con eso en mente crear o exportar-> importar una máquina es exactamente lo mismo y no me da ningún beneficio.

Cuando crea una máquina, solo puede usarla y administrarla desde una sola computadora. Tu podrías querer:

1) haga una copia de seguridad de sus hosts
2) transferirlos a otra computadora
3) compártelos con un miembro del equipo

¿Deberíamos tener un comando drop para que podamos eliminar la máquina de la lista sin terminarla? Creo que podría ser útil después de que algunas máquinas se exporten y transfieran a otra computadora.

¿Qué contendrá exactamente el archivo guardado? es decir; ¿Contendrá el token para conectarse al demonio?

Idealmente, debería haber algo para administrar computadoras / personas para tener acceso al host. Pensando en la línea de un token de una sola vez que puede ser para conectar una nueva computadora a un host existente.

@bfirsh @waitingkuo Esta parece una característica realmente útil que

Cualquier razón por la que la implementación (# 29) parece haberse estancado. ¿Algo que pueda hacer para intentar ayudar?

+1 sería genial

+1

+1

+1

Hemos creado una herramienta que usamos nosotros mismos para facilitar la exportación de máquinas acoplables. Básicamente, exporta todas las claves ssh de certificados. ¡Sus comentarios son bienvenidos!

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

podría ser una exageración, ¡pero algo como un registro de máquina acoplable sería increíble!

Actualmente estamos usando un repositorio de git para compartir la configuración de la ventana acoplable, el problema es que algunos de nosotros tenemos máquinas virtuales y ese es el lado negativo

@kevinsimper ¿cómo se importan de nuevo?

¿Este problema incluye la idea de compartir grupos de enjambres entre desarrolladores?

@saada Creo que solo cubre el intercambio de credenciales , no la configuración del clúster.
Aunque sería increíble tener esta habilidad en la máquina.
Actualmente solo conozco https://github.com/efrecon/machinery y https://github.com/nathanleclaire/moby

+1

Estoy buscando la capacidad de compartir máquinas entre usuarios en los mismos hosts.
¿Y hay alguna solución para esto? Estoy copiando toda la carpeta ~/.docker/machine/ por ahora

+1

+1

+1

+1

+1

+1

+1

+1

+1

Creo que una mejor manera de mostrar su intención es hacer clic en Subscribe (en las notificaciones del lado derecho)

Escribí un script de importación / exportación que puede usar mientras tanto hasta que esta función se implemente de forma nativa. Espero que esto ayude :)

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

@schickling, ¿ quizás algo para agregar al directorio "contrib" en este repositorio? https://github.com/docker/machine/tree/master/contrib/completion

Lamentablemente, no tengo el cajero automático para hacer eso, ¡pero siéntase libre de usarlo allí!

+1

+1

+1

Escribí otra pequeña utilidad para exportar / importar máquinas acoplables. Estamos usando esto para nuestra implementación de CI. https://www.npmjs.com/package/@mumbacloud/dmport

Gracias a kevinsimper por https://github.com/blackbeardapp/docker-machine-export Usé su idea para exportar como JSON, lo que lo hace bastante portátil para entornos de CI.

También comencé a trabajar en un script de exportación / importación, lo que realmente no entiendo por qué hay algunos archivos duplicados en certs y en la carpeta de la máquina específica machines/<myMachine> . Además, después de ajustar las rutas en config.json a algunas rutas personalizadas fuera de .docker/machine/machines... , noté que Docker todavía espera que algunos certificados / pems / claves se encuentren en esa carpeta

¿Alguien puede recomendar alguna documentación sobre lo que debería estar en realidad?

Parece que los desarrolladores de Node.js están utilizando activamente esto (y reescribiendo sus propias soluciones). Este lo encontré a través de Twitter

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

Compartiendo la configuración de su máquina Docker:

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

Ese mismo paquete de nodo (como lo menciona @StefanScherer ) también tiene scripts de shell si no tiene Node instalado.

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

Sin embargo, esta es una solución alternativa, la máquina acoplable debería manejar esto e idealmente proporcionar un certificado único por desarrollador / usuario (por lo que la revocación es posible).

el problema que tengo con los scripts de exportación / importación actuales es que sobrescribirán los archivos existentes en ~/.docker/machine/certs , ¿no es así?

Solo puedo hablar en nombre de dmport, sobrescribirá los archivos si existen.

Sin embargo, no es un problema para nosotros porque lo usamos en un docker ci que
no tiene nada que sobrescribir ya que es un nuevo contenedor en cada
desplegar.

Estoy planeando limpiar dmport pronto. Puedo agregar una bandera que evitará
sobrescribir archivos existentes si ayuda
El 1 de junio de 2016 a las 1:54 a. M., "Max Bruchmann" [email protected] escribió:

el problema que tengo con los scripts de exportación / importación actuales es que
sobrescribirá los archivos existentes en ~ / .docker / machine / certs, ¿no es así?

-
Estás recibiendo esto porque comentaste.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/docker/machine/issues/23#issuecomment -222932695, o silenciar
la amenaza
https://github.com/notifications/unsubscribe/ADIV-3T7FEa9CJvn_UdTb9AeQfwI3lkCks5qHUjegaJpZM4DFGT5
.

+1

Estamos usando un contenedor de Docker para esta tarea, ¿qué más?

La idea también es tener el mismo entorno (por ejemplo, rutas de configuración de certificados) para todos los usuarios, montado como un volumen de host. Puede usar docker-machine , docker-compose y docker en contenedores creados a partir de roj. Y puede pasar la carpeta de datos como un zip por correo electrónico o ponerla en un repositorio privado de git.

+1

No estoy seguro de que mi caso de uso sea el mismo que el de otros: he creado un par de máquinas diferentes para diferentes propósitos y quiero hacer una copia de seguridad de su existencia y configuración (menor). Preferiría tener algunos archivos de texto simples que se usan para recrear los cuadros.

https://www.npmjs.com/package/machine-share no parece respetar mi MACHINE_STORAGE_PATH. El script de Schickling hace una copia de seguridad de un par de archivos binarios grandes (por ejemplo, boot2docker.iso). https://www.npmjs.com/package/@mumbacloud/dmport arrojó un par de errores.

También queremos esta funcionalidad, hemos creado una máquina en gcloud usando docker-machine para el desarrollo y quiero permitir que mi compañero de trabajo se ejecute en el contenedor y vea los registros.

De hecho, me sorprende que esto aún no sea compatible. Mi ejemplo es que creé un clúster de enjambre de docker en Azure desde mi computadora portátil (sin pensar en esto todo el tiempo) y ahora quiero que otros desarrolladores puedan administrar el clúster, así que creé una máquina virtual compartida en Azure que todos pueden compartir. Instalé docker-machine y ahora necesito una forma de importar las máquinas desde mi computadora portátil a nuestra caja de salto en Azure.

@jcrben Hola, ¿qué hay de publicar un problema completo en machine-share , con respecto a MACHINE_STORAGE_PATH?

Recientemente revisé el trabajo de bhurlow y tengo curiosidad por ver si algo se rompe

@jcrben ¿También https://github.com/dmstr/docker-roj? ... Solo soy curiosidad.

Gente, por el amor de todas las cosas, por favor 👍 el OP y no como un comentario discreto. El spam "+1" distrae la atención de la conversación.

FYI: # 3212

@lnshi Creo que el problema de importar un servidor Docker existente con docker-machine create -d generic ... , es que recrea los certificados y reinicia Docker, por lo que no es apropiado para un escenario de producción / trabajo en equipo.

@pedrodevoto Lo sé, solo mencioné esos problemas, ya que las personas han discutido mucho allí.
Por ahora, no creo que haya una solución adecuada todavía.

@ntwrkguru aún, hace que el tema sea relevante y vivo. No hay notificaciones sobre emojis.

Este problema tiene casi 4 años, dudo que algunos comentarios +1 más hagan que de repente se convierta en una prioridad.

@ntwrkguru Siempre que los desarrolladores de Docker clasifiquen los problemas por 👍, deberían estar en su radar. Es el segundo tema más votado en este momento. Así que mantener el 👍 en camino asegurará que se mantenga en la parte superior.

Ahora, no sé cómo el equipo de Docker prioriza los problemas, pero apuesto a que también tienen clientes que pagan, que apuesto a que siempre serán lo primero antes de mirar las solicitudes de funciones de la comunidad pública.

Lo mismo: https://github.com/docker/machine/issues/1328 ?

Me estoy acostumbrando a Docker y construí mi primer host usando docker-machine. Ahora, un día después, estoy tratando de conectarme a mi host de la ventana acoplable usando una estación de trabajo diferente ... Me sorprende ver que eso no es posible, al menos no sin algunos dolores de cabeza importantes. Parece una característica esencial para permitir a los equipos administrar hosts ...

Eso es porque Docker-Machine nunca fue diseñado para ser una herramienta de equipo. Es importante para una persona crear fácilmente máquinas virtuales que instalen automáticamente la ventana acoplable y configure los certificados TLS de dockerd para la administración remota de cli.

Si está intentando crear e implementar entornos de Docker para equipos, es probable que desee utilizar una herramienta diferente.

@BretFisher y ¿qué herramientas serían? No es que quiera usarlo para equipos, solo desde 3 estaciones de trabajo diferentes ...

Uno de los grandes beneficios de docker-machine es que configura TLS en el motor de la ventana acoplable para la administración remota de cli.

Hoy se lanzó Docker Engine 18.09 y, con él, una gran característica nueva que permite la administración remota de cli utilizando túneles SSH (de algún tipo) y es un enfoque mucho mejor, en mi opinión, para aquellos de nosotros sin la necesidad de un RBAC completo del motor docker. Para aquellos que usan docker-machine simplemente para facilitar la administración remota, les recomiendo revisar esto en 18.09. Tanto su servidor de Docker como su cliente deben estar en 18.09, y siempre que pueda SSH, puede usar la cli de forma remota.

El capitán de Docker Luc Juggery tiene un artículo rápido sobre esto . Espero que se convierta en mi forma predeterminada de usar Docker de forma remota.

Entiendo lo que estás diciendo @BretFisher , pero sería bueno tenerlo en docker-machine, ya que realiza un seguimiento de los controles remotos de todos modos. Si voy a administrarlos a través de SSH, es probable que ni siquiera me moleste en usar docker-machine para implementarlos y, en su lugar, use Ansible. Docker-machine es otra herramienta que podría ser excelente, pero está relegada a mediocre debido a la falta de desarrollo.

@adilinden para un solo usuario, las opciones incluyen:

  1. sincronizar ~/.docker/machine/machines entre esas máquinas en un repositorio de git privado y / o cifrado. Es posible que también necesite ~/.docker/machine/certs , no estoy seguro. Debe ser razonablemente seguro, ya que almacena certificados privados.

  2. Elija una AMI, Droplet, etc. que ya tenga Docker instalado e impleméntelos. Luego, use la nueva función SSH 18.09 para controlar de forma remota el motor de la ventana acoplable.

  3. Pruebe una de las muchas herramientas que exportan / importan los directorios de datos de la máquina que enumeré anteriormente.

@BretFisher Me gusta mucho el n. ° 2, parece la mejor opción con diferencia para mi escenario, ya que todas las perillas y botones ya están en su lugar. El cambio de host también parece trivial, ya que simplemente establece una única variable de entorno.

Ahora solo para descubrir cómo hacer que Docker para Mac sea 18.09 en lugar de 18.06.1-ce-mac73 (26764).

@ntwrkguru docker-machine es ideal para máquinas únicas o configuraciones personales o para alguien que tal vez solo necesite ~ 10 servidores como máximo, pero si alguna vez ha intentado administrar más de 10 servidores con él, verá sus límites de inmediato. No diría que se debe a la falta de desarrollo, sino más bien "fuera del alcance" de los objetivos originales de las herramientas.

En SSH, no usaría ansible en este caso, lo que estoy diciendo es que una vez que haya implementado cualquier servidor acoplable (ansible o de otro tipo) que ejecute 18.09+, siempre que tenga permiso SSH para ese servidor, ahora puedo hacer algo como:

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

Para controlar ese motor de forma remota sin ninguna configuración o configuración especial. Ser capaz de exportar un envvar y luego ejecutar un montón de comandos contra ese motor (sin envolverlos en ansible, etc.) es muy útil.

@adilinden, la versión de Linux acaba de lanzarse hoy, por lo que deberá darles a los equipos unos días o una semana para implementar todos los productos posteriores que lo usan :). Si lo desea hoy , use la versión de borde que tiene la versión beta 18.09 y funciona bien para mí en Mac.

Es cierto que no me he metido con docker-machine en varios años. Me quedan 4 servidores ejecutando el motor Docker sin formato.

Entonces, ¿cuál es el beneficio entre docker -H ssh://[email protected] run -p 80:80 nginx y ssh://[email protected] docker run -p 80:80 nginx ?

[editar] No ser discutidor; Me pregunto si hay un beneficio claro.

@ntwrkguru Puedo compilar desde un archivo Docker en mi estación de trabajo usando el comando docker -H ssh://[email protected] . . Mientras que lo mismo falla (como se esperaba) usando ssh -luser 10.10.10.10 docker build .

Solo para información, también puede usar ssh para reenvío de sockets. Según https://medium.com/@dperny/forwarding -the-docker-socket-over-ssh-e6567cfab160, pero con una ligera modificación.

En una sesión de terminal ejecutar

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

En otra carrera

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

o

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

Tuve el mismo problema y creé scripts de shell para hacer la copia de seguridad y la restauración:
https://github.com/usr42/docker-machine-backup

Solo se respaldan los datos realmente necesarios. Por ejemplo, no hay archivos iso dentro de la copia de seguridad.

¿Fue útil esta página
0 / 5 - 0 calificaciones