Machine: Maschinen exportieren / importieren

Erstellt am 6. Dez. 2014  ·  67Kommentare  ·  Quelle: docker/machine

So etwas sollte für die Übertragung von Maschinen funktionieren:

 $ machine export test | ssh anotherhost machine import

(Vielleicht könnten wir machine inspect ?)

kinenhancement

Hilfreichster Kommentar

Wenn Sie eine Maschine erstellen, können Sie sie nur von einem einzigen Computer aus verwenden und verwalten. Sie möchten vielleicht:

1) Sichern Sie Ihre Hosts
2) Übertragen Sie sie auf einen anderen Computer
3) teile sie mit einem Teammitglied

Alle 67 Kommentare

Was ist der Gewinn bei diesem? Das Ziel der Verwendung von Maschine aus meiner Sicht ist es, eine einfache Maschine mit Docker darauf einzurichten (keine ausgefallenen oder benutzerdefinierten Dinge). In diesem Sinne ist das Erstellen oder Exportieren> Importieren einer Maschine genau das gleiche und bringt mir keinen Vorteil.

Wenn Sie eine Maschine erstellen, können Sie sie nur von einem einzigen Computer aus verwenden und verwalten. Sie möchten vielleicht:

1) Sichern Sie Ihre Hosts
2) Übertragen Sie sie auf einen anderen Computer
3) teile sie mit einem Teammitglied

Sollten wir einen drop Befehl haben, damit wir den Computer aus der Liste entfernen können, ohne ihn zu beenden? Ich denke, es könnte nützlich sein, nachdem einige Maschinen exportiert und auf einen anderen Computer übertragen wurden.

Was genau enthält die gespeicherte Datei? dh; Enthält es das Token für die Verbindung zum Daemon?

Idealerweise sollte es etwas geben, mit dem Computer / Personen verwaltet werden können, um Zugriff auf den Host zu erhalten. Denken Sie nach dem Vorbild eines einmaligen Tokens, bei dem ein neuer Computer mit einem vorhandenen Host verbunden werden kann.

@bfirsh @waitingkuo Dies scheint eine wirklich nützliche Funktion zu sein, die wir bei Rancher verwenden würden (wir

Jeder Grund, warum die Implementierung (# 29) ins Stocken geraten zu sein scheint. Was könnte ich tun, um zu versuchen zu hepen?

+1 wäre großartig

+1

+1

+1

Wir haben ein Tool erstellt, das wir selbst verwenden, um den Export von Docker-Maschinen zu vereinfachen. Grundsätzlich werden alle Zertifikate-SSH-Schlüssel exportiert. Feedback ist willkommen!

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

könnte ein Overkill sein, aber so etwas wie eine Docker-Maschinen-Registrierung wäre fantastisch!

Derzeit verwenden wir ein Git-Repo zum Teilen von Docker-Einstellungen. Das Problem ist, dass einige von uns Virtualbox-Maschinen haben, und das ist der Nachteil

@kevinsimper Wie importierst du sie zurück?

Enthält dieses Problem die Idee, Schwarmcluster zwischen Entwicklern zu teilen?

@saada Ich denke, es geht nur um die gemeinsame Nutzung von Anmeldeinformationen , nicht um die Cluster-Konfiguration.
Es wäre großartig, diese Fähigkeit in der Maschine zu haben.
Derzeit kenne ich nur https://github.com/efrecon/machinery und https://github.com/nathanleclaire/moby

+1

Ich kümmere mich um die Möglichkeit, Computer zwischen Benutzern auf denselben Hosts zu teilen.
Und gibt es dafür eine Problemumgehung? Ich kopiere vorerst den gesamten Ordner ~/.docker/machine/

+1

+1

+1

+1

+1

+1

+1

+1

+1

Ich denke, eine bessere Möglichkeit, Ihre Absicht zu zeigen, besteht darin, auf Subscribe zu klicken (auf der rechten Seite Benachrichtigungen ).

Ich habe ein Import / Export-Skript geschrieben, das Sie in der Zwischenzeit verwenden können, bis diese Funktion nativ implementiert wird. Hoffe das hilft :)

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

@schickling vielleicht etwas zum "Contrib" https://github.com/docker/machine/tree/master/contrib/completion

Leider habe ich nicht die Zeit, das zu tun, aber bitte zögern Sie nicht, es dort hineinzuziehen!

+1

+1

+1

Ich habe noch ein kleines Dienstprogramm zum Exportieren / Importieren von Docker-Maschinen geschrieben. Wir verwenden dies für unsere CI-Bereitstellung. https://www.npmjs.com/package/@mumbacloud/dmport

Vielen Dank an kevinsimper für https://github.com/blackbeardapp/docker-machine-export. Ich habe Ihre Idee zum Exportieren als JSON verwendet, wodurch es für CI-Umgebungen ziemlich portabel ist.

Ich habe auch angefangen, an einem Export / Import-Skript zu arbeiten, was ich wirklich nicht verstehe, warum es einige doppelte Dateien im certs und im spezifischen Maschinenordner machines/<myMachine> . Nachdem ich die Pfade in config.json an einige benutzerdefinierte Pfade außerhalb von .docker/machine/machines... angepasst hatte, stellte ich fest, dass Docker weiterhin erwartet, dass sich einige Zertifikate / Pems / Schlüssel in diesem Ordner befinden

Kann jemand eine Dokumentation darüber empfehlen, was wo eigentlich sein sollte?

Es sieht so aus, als würden Node.js Entwickler dies aktiv nutzen (und eigene Lösungen neu schreiben). Diesen habe ich via Twitter gefunden

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

Freigeben Ihrer Docker Machine-Konfiguration:

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

Das gleiche Knotenpaket (wie von @StefanScherer erwähnt ) enthält auch Shell-Skripte, wenn Sie Node nicht installiert haben.

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

Dies ist eine Problemumgehung. Docker-Computer sollten dies jedoch handhaben und im Idealfall ein eindeutiges Zertifikat pro Entwickler / Benutzer bereitstellen (ein Widerruf ist daher möglich).

Das Problem mit den aktuellen Export- / Importskripten ist, dass sie vorhandene Dateien in ~/.docker/machine/certs überschreiben, nicht wahr?

Ich kann nur für dmport sprechen, es werden Dateien überschrieben, wenn sie existieren.

Es ist jedoch kein Problem für uns, weil wir es in einem Docker verwenden
Es gibt nichts zu überschreiben, da es sich bei jedem um einen neuen Container handelt
bereitstellen.

Ich plane, dmport bald aufzuräumen. Ich kann eine Flagge hinzufügen, die dies verhindert
Überschreiben vorhandener Dateien, wenn dies hilfreich ist
Am 1. Juni 2016, 01:54 Uhr schrieb "Max Bruchmann" [email protected] :

Das Problem, das ich mit den aktuellen Export / Import-Skripten habe, ist, dass sie
werden vorhandene Dateien in ~ / .docker / machine / certs überschrieben, nicht wahr?

- -
Sie erhalten dies, weil Sie kommentiert haben.
Antworte direkt auf diese E-Mail und sieh sie dir auf GitHub an
https://github.com/docker/machine/issues/23#issuecomment -222932695 oder stumm schalten
der Faden
https://github.com/notifications/unsubscribe/ADIV-3T7FEa9CJvn_UdTb9AeQfwI3lkCks5qHUjegaJpZM4DFGT5
.

+1

Wir verwenden für diese Aufgabe einen Docker-Container - was noch?

Die Idee ist auch, für alle Benutzer dieselbe Umgebung (z. B. Zertifizierungskonfigurationspfade) zu haben, die als Host-Volume bereitgestellt wird. Sie können docker-machine , docker-compose und docker in Containern verwenden, die aus roj erstellt wurden. Und Sie können den Datenordner als Zip per E-Mail übergeben oder in ein privates Git-Repo legen.

+1

Ich bin mir nicht sicher, ob mein Anwendungsfall mit anderen identisch ist. Ich habe ein paar verschiedene Maschinen für verschiedene Zwecke erstellt und möchte deren Existenz und (geringfügige) Konfiguration sichern. Ich hätte lieber nur ein paar einfache Textdateien, mit denen die Felder neu erstellt werden.

https://www.npmjs.com/package/machine-share scheint meinen MACHINE_STORAGE_PATH nicht zu respektieren. schicklings Skript sichert einige große Binärdateien (z. B. boot2docker.iso). https://www.npmjs.com/package/@mumbacloud/dmport warf ein paar Fehler.

Wir möchten auch diese Funktionalität, wir haben eine Maschine auf gcloud mit Docker-Maschine für die Entwicklung erstellt und ich möchte meinem Kollegen erlauben, in den Container auszuführen und die Protokolle anzuzeigen.

Ich bin tatsächlich überrascht, dass dies nicht bereits unterstützt wird. Mein Beispiel ist, dass ich von meinem Laptop aus einen Docker-Schwarmcluster in Azure erstellt habe (ohne dies vollständig durchzudenken). Jetzt möchte ich, dass andere Entwickler den Cluster verwalten können, sodass ich in Azure eine freigegebene VM erstellt habe, die jeder freigeben kann. Ich habe Docker-Maschine installiert und jetzt brauche ich eine Möglichkeit, die Maschinen von meinem Laptop in unsere Sprungbox in Azure zu importieren.

@jcrben Hallo, was ist mit dem Posten eines vollständigen Problems auf der Maschinenfreigabe in Bezug auf MACHINE_STORAGE_PATH?

Ich habe kürzlich Bhurlows Arbeit überprüft und bin gespannt, ob etwas kaputt geht

@jcrben Haben Sie auch https://github.com/dmstr/docker-roj ausprobiert

Leute, aus Liebe zu allen Dingen, bitte 👍 das OP und nicht als diskreter Kommentar. "+1" Spam lenkt vom Gespräch ab.

Zu Ihrer Information: # 3212

@lnshi Ich denke, dass das Problem beim Importieren eines vorhandenen Docker-Servers mit docker-machine create -d generic ... , dass Zertifikate neu erstellt und Docker neu gestartet werden, was für ein Produktions- / Teamwork-Szenario nicht geeignet ist.

@pedrodevoto Ich weiß, ich habe gerade diese Probleme erwähnt, da ppl dort viel diskutiert haben.
Im Moment glaube ich noch nicht, dass es eine richtige Lösung gibt.

@ntwrkguru noch, es macht das Thema relevant und lebendig. Es gibt keine Benachrichtigung über Emojis.

Dieses Problem ist fast 4 Jahre alt. Ich bezweifle, dass ein paar weitere +1 Kommentare plötzlich dazu führen werden, dass es zu einer Priorität wird.

@ntwrkguru Solange die Docker-Entwickler Probleme nach 👍 sortieren, sollte es auf ihrem Radar sein. Es ist im Moment das am zweithäufigsten bewertete Thema. Wenn Sie also das 👍 kommen lassen, wird sichergestellt, dass es oben bleibt.

Jetzt weiß ich nicht, wie das Docker-Team Probleme priorisiert, aber ich wette, dass sie auch zahlende Kunden haben. Ich wette, dass dies immer an erster Stelle steht, bevor die Anfragen nach öffentlichen Community-Funktionen geprüft werden.

Das gleiche: https://github.com/docker/machine/issues/1328 ?

Ich gewöhne mich gerade an Docker und baue meinen ersten Host mit Docker-Maschine. Jetzt, einen Tag später, versuche ich, über eine andere Workstation eine Verbindung zu meinem Docker-Host herzustellen ... Überrascht zu sehen, dass dies nicht möglich ist, zumindest nicht ohne größere Kopfschmerzen. Scheint eine wesentliche Funktion zu sein, mit der Teams Hosts verwalten können ...

Das liegt daran, dass die Docker-Maschine nie als Team-Tool konzipiert wurde. Es ist für eine Person gemein, auf einfache Weise VMs zu erstellen, die Docker automatisch installieren und Docker-TLS-Zertifikate für die Remote-CLI-Verwaltung einrichten.

Wenn Sie versuchen, Docker-Umgebungen für Teams zu erstellen und bereitzustellen, möchten Sie wahrscheinlich ein anderes Tool verwenden.

@BretFisher und welche Tools wäre das? Nicht, dass ich es für Teams verwenden möchte, nur von 3 verschiedenen Arbeitsstationen aus ...

Einer der großen Vorteile der Docker-Maschine besteht darin, dass TLS auf der Docker-Engine für die Remote-CLI-Verwaltung eingerichtet wird.

Heute wurde Docker Engine 18.09 veröffentlicht und damit eine großartige neue Funktion, die die Remote-Cli-Verwaltung mithilfe von SSH-Tunneling (in gewisser Weise) ermöglicht und für diejenigen von uns ein viel besserer IMO-Ansatz ist, ohne dass ein RBAC mit Docker-Engine erforderlich ist. Für diejenigen, die Docker-Maschinen verwenden, um die Fernverwaltung zu vereinfachen, empfehle ich, dies in 18.09 zu überprüfen. Sowohl Ihr Docker-Server als auch Ihr Client müssen sich am 18.09 befinden. Solange Sie SSH verwenden können, können Sie die CLI remote verwenden.

Hafenkapitän Luc Juggery hat eine kurze Beschreibung dazu . Ich gehe davon aus, dass dies meine Standardmethode für die Remote-Verwendung von Docker sein wird.

Ich verstehe , was Sie sagen

@adilinden für einen einzelnen Benutzer Optionen umfassen:

  1. Synchronisieren Sie ~/.docker/machine/machines zwischen diesen Computern in einem privaten und / oder verschlüsselten Git-Repo. Möglicherweise benötigen Sie auch ~/.docker/machine/certs , da bin ich mir nicht sicher. Es muss einigermaßen sicher sein, da es private Zertifikate speichert.

  2. Wählen Sie ein AMI, Droplet usw. aus, auf dem Docker bereits installiert ist, und stellen Sie diese bereit. Verwenden Sie dann die neue 18.09 SSH-Funktion, um die Docker-Engine fernzusteuern.

  3. Probieren Sie eines der vielen Tools aus, mit denen Sie die oben aufgeführten Maschinendatenverzeichnisse exportieren / importieren können.

@BretFisher Ich mag # 2 wirklich, es scheint bei weitem die beste Option für mein Szenario zu sein, da alle Knöpfe und Knöpfe dafür bereits vorhanden sind. Das Wechseln des Hosts sieht ebenfalls trivial aus, da lediglich eine einzelne Umgebungsvariable festgelegt wird.

Nun, nur um herauszufinden, wie Docker für Mac auf 18.09 statt 18.06.1-ce-mac73 (26764) gebracht werden kann.

@ntwrkguru Docker-Maschine eignet sich hervorragend für einmalige Maschinen oder persönliche Setups oder für jemanden, der möglicherweise nur maximal 10 Server benötigt. Wenn Sie jedoch jemals versucht haben, mehr als 10 Server damit zu verwalten, werden Sie sofort an seine Grenzen stoßen. Ich würde nicht sagen, dass dies auf mangelnde Entwicklung zurückzuführen ist, sondern "nicht im Rahmen" der ursprünglichen Ziele der Tools.

Auf dem SSH würden Sie in diesem Fall nicht ansible verwenden. Ich sage, wenn Sie einen Docker-Server (ansible oder anderweitig) bereitgestellt haben, auf dem 18.09+ ausgeführt wird, solange Sie über die SSH-Berechtigung für diesen Server verfügen kann jetzt so etwas machen wie:

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

Zur Fernsteuerung dieser Engine ohne spezielle Konfiguration oder Einrichtung. Es ist sehr praktisch, eine envvar exportieren und dann eine Reihe von Befehlen für diese Engine ausführen zu können (ohne sie in ansible usw. zu verpacken).

@adilinden Die Linux-Version wurde heute veröffentlicht. Sie müssen den Teams also ein paar Tage oder eine Woche Zeit geben, um alle nachgeschalteten Produkte, die sie verwenden, auf den heute wollen, verwenden Sie die Edge-Version, die die Beta-Version 18.09 enthält und für mich auf dem Mac einwandfrei funktioniert.

Zugegeben, ich habe mich seit einigen Jahren nicht mehr mit Docker-Maschinen angelegt. Ich habe noch 4 Server mit einfacher Docker-Engine.

Also, was ist der Vorteil zwischen docker -H ssh://[email protected] run -p 80:80 nginx und ssh://[email protected] docker run -p 80:80 nginx ?

[bearbeiten] Nicht argumentativ sein; Ich frage mich, ob es einen klaren Vorteil gibt.

@ntwrkguru Ich kann mit dem Befehl docker -H ssh://[email protected] . aus einer Docker-Datei auf meiner Workstation erstellen. Während das gleiche (wie erwartet) mit ssh -luser 10.10.10.10 docker build . fehlschlägt

Nur zur Information, kann ssh auch für die Socket-Weiterleitung verwenden. Per https://medium.com/@dperny/forwarding -the-docker-socket-over-ssh-e6567cfab160, jedoch mit einer geringfügigen Änderung.

In einer Terminalsitzung ausführen

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

In einem anderen Lauf

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

oder

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

Ich hatte das gleiche Problem und erstellte Shell-Skripte für die Sicherung und Wiederherstellung:
https://github.com/usr42/docker-machine-backup

Es werden nur die wirklich benötigten Daten gesichert. Zum Beispiel befinden sich keine ISO-Dateien in der Sicherung.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen