2015-05-13 3 views
24

Können die Docker Maschinen von einer Entwickler-Workstation erstellt Docker-Maschine Befehle von einer anderen Workstation verwaltet werden. Ich bin nicht auf der Suche nach einer Lösung mit Docker Schwarm, sondern nur Docker Maschine.Verwalten von Remote-Docker Maschinen aus mehreren Entwicklungsmaschinen

Von meinem Verständnis, wenn docker-machine die Maschine in einer entfernten Umgebung wie AWS EC2 erstellt, erstellt es Schlüssel und Zertifikate, die dann für die TLS-basierte Kommunikation mit der Maschine verwendet werden. Wenn ich also diese Schlüssel und Zertifikate auf einen anderen Entwicklungscomputer kopiere, sollte ich theoretisch eine Verbindung zu diesem Remote-Docker-Rechner herstellen können.

Allerdings würde Ich mag wissen, ob, dass die erwartete Methode zu erreichen, was ich zu tun, bin auf der Suche nach. IMO Dies wird ein Szenario sein, in dem die meisten Docker-Benutzer vor der Tür stehen, da mehrere Teammitglieder den gleichen Docker-Remote-Computer gemeinsam nutzen und verwalten müssen.

würde Jede Führung in dieser Angelegenheit wirklich zu schätzen.

+0

Gibt es Gründe, die Sie benötigen für die Entwicklung Docker Host zu teilen? Es ist einfacher, jeder Entwickler ihren eigenen Docker Host vm für die Entwicklung hat, nur billige Instanztypen wählen und stellen Sie sicher, zerstören/die Instanzen stoppen, wenn nicht – number5

+0

für die Antwort Danke verwendet. Ich beabsichtigte ein Szenario, das nicht nur in der Entwicklungsphase des Produkts, sondern auch in der Produktion bestand. Wie können wir diese Docker-Maschine von einer anderen Workstation/einem anderen Computer aus remote verwalten, nachdem ein Remote-Docker-Computer von einer Workstation aus erstellt wurde? – frameworksnow

+0

hast du es geschafft, einen Weg zu finden, dies zum Laufen zu bringen? – dcohenb

Antwort

22

von TLS-basierte Kommunikation verwenden, Docker ist eine Zweiwege SSL Überprüfung. Mit anderen Worten, der Client verifiziert nicht nur den Server, sondern auch umgekehrt. Wenn Sie einen Docker-Computer mit aktiviertem TLS erstellen, werden Sie Ihre eigene Zertifizierungsstelle (Certificate Authority, CA), und Sie sind somit für die Verwaltung der SSL-Zertifikate verantwortlich. Die Docker-Maschine macht dies hinter den Kulissen, aber ich glaube, Sie können selbstsignierte CA manuell einrichten und Docker neu positionieren, um die von Ihnen eingerichteten Zertifikate und Schlüssel zu verwenden. Anstatt ein einziges Zertifikat und einen Schlüssel an alle Entwickler-Workstations zu verteilen, müssen Sie daher ein eindeutiges Zertifikat und einen privaten Schlüssel für jeden vom privaten Schlüssel der Zertifizierungsstelle signierten Entwickler ausstellen. Das einzige, was von allen geteilt werden muss, ist das CA-Zertifikat, das öffentlich ist.

Der Vorteil davon ist, dass Sie ein Zertifikat widerrufen können, sobald ein Entwickler verlässt, obwohl dies mit selbstsignierten Zertifikaten schwierig ist, und es Rechenschaftspflicht erlaubt, wo Sie überprüfen können, wer was aus den Protokollen getan hat.

Docker TLS setup.

Becoming your own CA tutorial and certificate revocation

+0

Ahh yes :) Dies ist eine großartige Information für jeden, der sich Sorgen macht, entfernte Docker-Hosts in neueren Versionen der Docker Engine zu verwalten! TL; DR; SSL gesichert :) –

+0

Danke @Daniel für die Erklärung. Genau das habe ich gesucht. Ich bin immer noch überrascht, dass docker keinen Unterbefehl an docker-machine angeschlossen hat, um dasselbe zu erreichen. – frameworksnow

+5

Die obige Frage von @ number5 lässt mich fragen, ob docker machine vielleicht der falsche Weg ist, um zu implementieren? Aber es fällt mir auf, dass ich nur in der Lage sein sollte, von "~/.docker/machine/certs" und "~/.docker/machine/machines/..." auf eine andere Maschine zu kopieren, oder? Fehle ich etwas, was das zu einer unsicheren Sache machen würde?Ich vermeide es, 'default' zu kopieren, da dies eine ganze boot2docker-ISO enthält. –

2

Es gibt ein externes Tool/Export-Docker-Maschinen zu importieren: machine-share.

machine-export <machine-name> 
>> exported to <machine-name>.zip 
machine-import <machine-name>.zip 
>> imported 

Nebenbei glaube ich, Daniels Lösung ist überlegen, aber erfordert eine erhebliche Investition in Tools/Workflows. machine-export sollte in 95% der Fälle ausreichen.