Machine: Machines d'exportation / importation

Créé le 6 déc. 2014  ·  67Commentaires  ·  Source: docker/machine

Quelque chose comme ça devrait fonctionner pour le transfert de machines:

 $ machine export test | ssh anotherhost machine import

(Peut-être pourrions-nous utiliser machine inspect ?)

kinenhancement

Commentaire le plus utile

Lorsque vous créez une machine, vous ne pouvez l'utiliser et la gérer qu'à partir d'un seul ordinateur. Tu pourrais vouloir:

1) Sauvegardez vos hôtes
2) les transférer sur un autre ordinateur
3) Partagez-les avec un membre de l'équipe

Tous les 67 commentaires

Quel est le gain sur celui-ci? Le but de l'utilisation de la machine de mon point de vue est de configurer une machine simple avec docker dessus (pas de trucs fantaisistes ou personnalisés). Dans cet esprit, créer ou exporter -> importer une machine est exactement la même chose et ne me donne aucun avantage.

Lorsque vous créez une machine, vous ne pouvez l'utiliser et la gérer qu'à partir d'un seul ordinateur. Tu pourrais vouloir:

1) Sauvegardez vos hôtes
2) les transférer sur un autre ordinateur
3) Partagez-les avec un membre de l'équipe

Devrions-nous avoir une commande drop afin de pouvoir supprimer la machine de la liste sans la terminer? Je pense que cela pourrait être utile après l'exportation et le transfert de certaines machines vers un autre ordinateur.

Que contiendra exactement le fichier enregistré? c'est à dire; Contiendra-t-il le jeton de connexion au démon?

Idéalement, il devrait y avoir quelque chose pour gérer les ordinateurs / personnes pour avoir accès à l'hôte. Penser le long des lignes d'un jeton unique qui peut être de connecter un nouvel ordinateur à un hôte existant.

@bfirsh @waitingkuo Cela semble être une fonctionnalité vraiment utile que nous utiliserions chez Rancher (nous aimerions utiliser la machine côté serveur).

N'importe quelle raison l'implémentation (# 29) semble avoir bloqué. Est-ce que je pourrais faire quelque chose pour essayer de soigner?

+1 serait génial

+1

+1

+1

Nous avons créé un outil que nous utilisons nous-mêmes, pour faciliter l'exportation des dockers-machines. Il exporte essentiellement toutes les clés ssh des certificats. Vos commentaires sont les bienvenus!

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

peut être exagéré, mais quelque chose comme un registre de docker-machine serait génial!

Actuellement, nous utilisons un dépôt git pour partager les paramètres du docker, le problème est que certains d'entre nous ont des machines virtualbox et c'est le côté négatif

@kevinsimper comment les

Ce problème inclut-il l'idée de partager des grappes d'essaim entre les développeurs?

@saada Je pense que cela ne couvre que le partage des informations d'identification , pas la configuration du cluster.
Ce serait génial d'avoir cette capacité en machine.
Actuellement, je ne connais que https://github.com/efrecon/machinery et https://github.com/nathanleclaire/moby

+1

Je m'occupe de la capacité de partager la machine entre les utilisateurs dans les mêmes hôtes.
Et y a-t-il une solution de contournement pour cela? Je copie le dossier entier ~/.docker/machine/ pour le moment

+1

+1

+1

+1

+1

+1

+1

+1

+1

Je pense qu'une meilleure façon de montrer votre intention est de cliquer sur Subscribe (à droite Notifications )

J'ai écrit un script d'import / export que vous pouvez utiliser en attendant jusqu'à ce que cette fonctionnalité soit implémentée de manière native. J'espère que cela t'aides :)

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

@schickling peut-être quelque chose à ajouter au répertoire "contrib" de ce dépôt? https://github.com/docker/machine/tree/master/contrib/completion

Malheureusement, je n'ai pas le temps de le faire, mais n'hésitez pas à le retirer!

+1

+1

+1

J'ai écrit encore un autre petit utilitaire pour exporter / importer des machines docker. Nous l'utilisons pour notre déploiement CI. https://www.npmjs.com/package/@mumbacloud/dmport

Merci à kevinsimper pour https://github.com/blackbeardapp/docker-machine-export J'ai utilisé votre idée pour exporter au format JSON, ce qui le rend assez portable pour les environnements CI.

J'ai également commencé à travailler sur un script d'exportation / importation, ce que je ne comprends vraiment pas pourquoi il y a des fichiers dupliqués dans le certs et le dossier machine spécifique machines/<myMachine> . Aussi après avoir ajusté les chemins dans le config.json à certains chemins personnalisés en dehors du .docker/machine/machines... j'ai noté que docker attend toujours que certains certificats / pems / clés soient situés dans ce dossier

Quelqu'un peut-il recommander une documentation sur ce qui devrait être où réellement?

On dirait que les développeurs de Node.js l'utilisent activement (et réécrivent leurs propres solutions). Celui que j'ai trouvé via Twitter

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

Partage de la configuration de votre Docker Machine:

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

Ce même paquet de nœuds (comme mentionné par @StefanScherer ) a également des scripts shell si vous n'avez pas installé Node.

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

Il s'agit d'une solution de contournement, cependant, docker-machine doit gérer cela et idéalement fournir un certificat unique par développeur / utilisateur (la révocation est donc possible).

le problème que j'ai avec les scripts d'exportation / importation actuels est qu'ils écraseront les fichiers existants dans ~/.docker/machine/certs , n'est-ce pas?

je ne peux parler que pour dmport, il écrasera les fichiers s'ils existent.

ce n'est pas un problème pour nous car nous l'utilisons dans un docker ci qui
n'a rien à écraser car c'est un nouveau conteneur sur chaque
déployer.

Je prévois de nettoyer bientôt dmport, je peux ajouter un indicateur qui empêchera
écraser les fichiers existants si cela peut aider
Le 1er juin 2016 à 01h54, "Max Bruchmann" [email protected] a écrit:

le problème que j'ai avec les scripts d'exportation / importation actuels est qu'ils
écraseront les fichiers existants dans ~ / .docker / machine / certs, n'est-ce pas?

-
Vous recevez ceci parce que vous avez commenté.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/docker/machine/issues/23#issuecomment -222932695, ou muet
le fil
https://github.com/notifications/unsubscribe/ADIV-3T7FEa9CJvn_UdTb9AeQfwI3lkCks5qHUjegaJpZM4DFGT5
.

+1

Nous utilisons un conteneur Docker pour cette tâche - quoi d'autre?

L'idée est également d'avoir le même environnement (par exemple, les chemins de configuration cert) pour tous les utilisateurs, monté en tant que volume hôte. Vous pouvez utiliser docker-machine , docker-compose et docker dans des conteneurs créés à partir de roj. Et vous pouvez passer le dossier de données sous forme de zip par e-mail ou le mettre dans un dépôt git privé.

+1

Je ne suis pas sûr que mon cas d'utilisation soit le même que les autres - j'ai créé quelques machines différentes à des fins différentes et je veux sauvegarder leur existence et leur configuration (mineure). Je préfère avoir quelques fichiers texte simples qui sont utilisés pour recréer les boîtes.

https://www.npmjs.com/package/machine-share ne semble pas respecter mon MACHINE_STORAGE_PATH. Le script de schickling sauvegarde quelques gros fichiers binaires (par exemple, boot2docker.iso). https://www.npmjs.com/package/@mumbacloud/dmport a généré quelques erreurs.

Nous voulons également cette fonctionnalité, nous avons créé une machine sur gcloud en utilisant docker-machine pour le développement et je souhaite permettre à mon collègue de s'exécuter dans le conteneur et d'afficher les journaux.

Je suis en fait surpris que cela ne soit pas déjà pris en charge. Mon exemple est que j'ai créé un cluster docker swarm dans Azure à partir de mon ordinateur portable (sans y penser complètement) et maintenant je veux que d'autres développeurs puissent gérer le cluster, j'ai donc créé une machine virtuelle partagée dans Azure que tout le monde peut partager. J'ai installé docker-machine et maintenant j'ai besoin d'un moyen d'importer les machines de mon ordinateur portable vers notre boîte de saut dans Azure.

@jcrben Salut, qu'en est-il de publier un numéro complet sur le partage de machine , concernant le MACHINE_STORAGE_PATH?

J'ai récemment revu le travail de bhurlow, et je suis curieux de voir si quelque chose casse

@jcrben Avez-vous également essayé https://github.com/dmstr/docker-roj? ... Je ne suis que des curiosités.

Les gens, pour l'amour de toutes choses proprement dites, s'il vous plaît 👍 l'OP et non comme un commentaire discret. Le spam "+1" distrait de la conversation.

FYI: # 3212

@lnshi Je pense que le problème avec l'importation d'un serveur docker existant avec docker-machine create -d generic ... , est qu'il recrée les certificats et redémarre Docker, donc pas approprié pour un scénario de production / travail d'équipe.

@pedrodevoto Je sais, je viens de mentionner ces problèmes, car les gens en ont beaucoup discuté.
Pour l'instant, je ne pense pas qu'il existe encore une solution appropriée.

@ntwrkguru toujours, cela rend le problème pertinent et vivant. Il n'y a pas de notification sur les emojis.

Ce numéro a presque 4 ans, je doute que quelques +1 commentaires de plus en feront soudainement une priorité.

@ntwrkguru Tant que les développeurs de docker trient les problèmes par 👍, cela devrait être sur leur radar. C'est le deuxième problème le plus voté pour le moment. Donc, garder le 👍 à venir vous assurera qu'il reste au top.

Maintenant, je ne sais pas comment l'équipe des dockers priorise les problèmes, mais je parie qu'elle a également des clients payants, ce qui, je parie, viendra toujours en premier avant d'examiner les demandes de fonctionnalités de la communauté publique.

Le même: https://github.com/docker/machine/issues/1328 ?

Je m'habitue juste à docker et construit mon premier hôte en utilisant docker-machine. Maintenant, un jour plus tard, j'essaye de me connecter à mon hôte docker en utilisant un autre poste de travail ... Surpris de voir que ce n'est pas possible, du moins pas sans de gros maux de tête. Cela semble être une fonctionnalité essentielle pour permettre aux équipes de gérer les hôtes ...

C'est parce que docker-machine n'a jamais été conçu pour être un outil d'équipe. Cela signifie pour un individu de créer facilement des VM qui installent automatiquement le docker et de configurer les certificats TLS dockerd pour la gestion cli à distance.

Si vous essayez de créer et de déployer des environnements Docker pour les équipes, vous souhaiterez probablement utiliser un outil différent.

@BretFisher et quels outils serait-ce? Non pas que je veuille l'utiliser pour des équipes, juste à partir de 3 postes de travail différents ...

L'un des grands avantages de docker-machine est qu'il configure TLS sur le moteur docker pour la gestion cli à distance.

Aujourd'hui, Docker Engine 18.09 a été publié et avec lui une nouvelle fonctionnalité qui permet la gestion à distance de cli en utilisant le tunnel SSH (en quelque sorte) et est une bien meilleure approche IMO pour ceux d'entre nous sans avoir besoin d'un moteur de docker complet RBAC. Pour ceux qui utilisent docker-machine simplement pour faciliter la gestion à distance, je recommande de vérifier cela dans 18.09. Votre serveur docker et votre client doivent tous deux être sur 18.09, et tant que vous pouvez utiliser SSH, vous pouvez utiliser le cli à distance.

Docker Captain Luc Juggery a un bref compte rendu

Je comprends ce que vous dites @BretFisher , mais ce serait bien de l'avoir dans docker-machine, car il garde quand même une trace des télécommandes. Si je vais les gérer via SSH, alors je ne prendrai probablement même pas la peine d'utiliser docker-machine pour les déployer, et d'utiliser à la place Ansible. Docker-machine est encore un autre outil qui pourrait être génial, mais qui est relégué à médiocre en raison d'un manque de développement.

@adilinden pour un seul utilisateur, les options incluent:

  1. sync ~/.docker/machine/machines entre ces machines dans un dépôt git privé et / ou chiffré. Vous aurez peut-être également besoin de ~/.docker/machine/certs , je ne suis pas sûr. Il doit être raisonnablement sécurisé car il stocke des certificats privés.

  2. Choisissez une AMI, Droplet, etc. sur laquelle Docker est déjà installé et déployez-les. Utilisez ensuite la nouvelle fonction SSH 18.09 pour contrôler à distance le moteur du docker.

  3. Essayez l'un des nombreux outils qui exportent / importent les répertoires de données machine que j'ai énumérés ci-dessus.

@BretFisher J'aime beaucoup le # 2, il me semble de loin la meilleure option pour mon scénario car tous les boutons et boutons sont déjà en place pour cela. Le changement d'hôtes semble également trivial, car il s'agit simplement de définir une seule variable d'environnement.

Maintenant, juste pour savoir comment obtenir Docker pour Mac vers 18.09 au lieu de 18.06.1-ce-mac73 (26764).

@ntwrkguru docker-machine est idéal pour les machines uniques ou les configurations personnelles ou pour quelqu'un qui n'a peut-être besoin que d'environ 10 serveurs maximum, mais si vous avez déjà essayé de gérer plus de 10 serveurs avec lui, vous verrez immédiatement ses limites. Je ne dirais pas que cela est dû à un manque de développement, mais plutôt "pas dans le cadre" des objectifs originaux des outils.

Sur le SSH, vous n'utiliseriez pas ansible dans ce cas, ce que je dis, c'est qu'une fois que vous avez déployé un serveur docker (ansible ou autre) qui exécute 18.09+, tant que vous avez l'autorisation SSH sur ce serveur, vous peut maintenant faire quelque chose comme:

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

Pour contrôler ce moteur à distance sans aucune configuration ou configuration spéciale. Pouvoir exporter un envvar puis exécuter un tas de commandes sur ce moteur (sans les envelopper dans ansible, etc.) est très pratique.

@adilinden la version Linux vient de tomber aujourd'hui, vous devrez donc donner aux équipes quelques jours ou quelques semaines pour déployer tous les produits en aval qui l'utilisent :). Si vous le souhaitez aujourd'hui , utilisez la version Edge qui a la version bêta 18.09 et fonctionne très bien pour moi sur Mac.

Certes, je n'ai pas joué avec docker-machine depuis plusieurs années. Il me reste 4 serveurs exécutant le moteur Docker ordinaire.

Alors, quel est l'avantage entre docker -H ssh://[email protected] run -p 80:80 nginx et ssh://[email protected] docker run -p 80:80 nginx ?

[modifier] Ne pas être argumentatif; Je me demande s'il y a un avantage clair.

@ntwrkguru Je peux construire à partir d'un fichier Docker sur mon poste de travail en utilisant la commande docker -H ssh://[email protected] . . Alors que la même chose échoue (comme prévu) en utilisant ssh -luser 10.10.10.10 docker build .

Juste pour information, peut également utiliser ssh pour le transfert de socket. Par https://medium.com/@dperny/forwarding -the-docker-socket-over-ssh-e6567cfab160, mais avec une légère modification.

Dans une session de terminal exécutée

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

Dans une autre course

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

J'ai eu le même problème et j'ai créé des scripts shell pour faire la sauvegarde et la restauration:
https://github.com/usr42/docker-machine-backup

Seules les données réellement nécessaires sont sauvegardées. Par exemple, aucun fichier iso ne se trouve dans la sauvegarde.

Cette page vous a été utile?
0 / 5 - 0 notes