Machine: Azure-Treiber - Ressourcenmanager-Version

Erstellt am 5. Jan. 2016  Â·  69Kommentare  Â·  Quelle: docker/machine

Ich glaube, ich habe Recht, wenn ich sage, dass die aktuelle UnterstĂŒtzung fĂŒr Docker-Computer in Azure das klassische Bereitstellungsmodell verwendet. Es wĂ€re großartig, auch das Resource Manager-Modell zu unterstĂŒtzen (da dies von MS fĂŒr neue Bereitstellungen empfohlen wird).

driveazure kinenhancement

Alle 69 Kommentare

: +1:

+1

+1

Es ist geplant, den Azure-Anbieter fĂŒr Docker-Computer auf die Verwendung von Azure Resource Manager zu verschieben - siehe Nr. 496

@lizrice Dies wird derzeit von mir aktiv bearbeitet. Wir sind uns der Nachfrage bewusst und erwarten daher bald etwas. Ich werde diesen Thread aktualisieren, sobald wir etwas Neues haben.

Das sind hervorragende Neuigkeiten @ahmetalpbalkan :-)

+1

Das wird sehr hilfreich sein! Vielen Dank, dass Sie aktiv daran gearbeitet haben.

Brauche das auf jeden Fall. Sie mĂŒssen auch keine Zertifikate zur Authentifizierung verwenden, es sei denn, Sie verwenden einen Azure Active Directory-Dienstprinzipal. Irgendwelche Fortschritte @ahmetalpbalkan?

Prost,
Trevor Sullivan

@ pcgeek86 wir werden den Service Principal Mist nicht machen. Der Authn-Prozess sieht genauso aus wie die plattformĂŒbergreifende Azure-CLI-Authentifizierung (Befehl "azure login" ). Alle 2 Wochen werden Sie aufgefordert, ein Browserfenster zu öffnen und auf eine SchaltflĂ€che zu klicken, um die App zu autorisieren.

@ahmetalpbalkan Ausgezeichnet, also haben Sie auch --username Parameter, wie Azure-Clil?

@ pcgeek86 , nein. FĂŒr die Azure-CLI ist der Parameter Benutzername nicht erforderlich. Es dient der AbwĂ€rtskompatibilitĂ€t.

@ahmetalpbalkan Ich habe nicht gesagt, erforderlich. Mit dem Parameter --username können Sie den AAD-Benutzernamen (Azure Active Directory) angeben. Wie ist diese "AbwĂ€rtskompatibilitĂ€t"? Was schlagen Sie fĂŒr die endgĂŒltige Implementierung vor?

Die zertifikatbasierte Authentifizierung mit Azure Service Management (ASM) ist die "AbwÀrtskompatibilitÀt".

@ pcgeek86 hmm, ich habe nie https://aka.ms/devicelogin gehen, können Sie dort Ihren AAD-Benutzernamen angeben? Wenn die gleiche Aufgabe ohne azure login (ohne --username ) erledigt werden kann, beabsichtige ich, dies auch so zu halten.

@ahmetalpbalkan Sie mĂŒssen sich wahrscheinlich im ARM-Modus ( azure config arm ) befinden, um die AAD-Authentifizierung mit ARM verwenden zu können. Ich benutze den ASM "Modus" nicht sehr oft.

Ja, Sie können den AAD-Benutzernamen mit https://aka.ms/devicelogin verwenden. Ich ziehe es jedoch vor, nicht in einen Browser zu gehen und stattdessen den Benutzernamen mit --username anzugeben. Funktioniert besser in Nur-Text-Szenarien. :) :)

Wenn dieselbe Aufgabe ohne Azure-Anmeldung (ohne --username) ausgefĂŒhrt werden kann, möchte ich dies auch weiterhin tun.

Wollen Sie, um sicherzustellen, dass ich alles richtig verstehe, vom Benutzer verlangen, dass er einen Webbrowser verwendet, um die Authentifizierung abzuschließen, anstatt sein Kennwort in die Befehlszeile einzugeben?

Mit einem Konto, fĂŒr das 2fa erforderlich ist, mĂŒssen Sie auf jeden Fall authentifizieren. Ich bin mir nicht sicher, ob dies eine Optimierung fĂŒr den 2fa-Fall ist.

@squillace FĂŒr Benutzer mit Multi-Faktor-Authentifizierung sicher. Aber warum nur eine Benutzergruppe bedienen? Ich vermute, dass die Mehrheit MFA sowieso nicht verwenden wird.

An diesem Punkt wird es nur fĂŒr alle schwieriger, und werden Sie die Leute nicht verĂ€rgern, indem Sie sie zwingen, einen Webbrowser zur Authentifizierung eines Befehlszeilentools zu verwenden?

Warum nicht noch einen Schritt weiter gehen und MFA irgendwie ĂŒber die Kommandozeile unterstĂŒtzen?

Sie sollten keine Benutzernamen und Passwörter außerhalb des normalen AAD-Anmeldebildschirms sammeln. Es ist unsicher und schlechte Praxis. Außerdem gibt es technisch zu viele Szenarien, um sie tatsĂ€chlich zum Laufen zu bringen. 2FA ist nicht möglich, ohne einen Browser zu öffnen, z. B. auf Prem ADFS, Secure Fob, Smartcard Auth usw.

Ich möchte nicht nur eine Gruppe ansprechen, sondern das Grundszenario muss alle abdecken.

Gesendet von Outlook Mo bilehttps: //aka.ms/blhgte

Am Do, 25. Februar 2016, um 10:11 Uhr bis 08:00 Uhr schrieb "Trevor Sullivan" < [email protected] [email protected] >:

@squil lacehttps: //github.com/squillace FĂŒr Benutzer mit Multi-Faktor-Authentifizierung sicher. Aber warum nur eine Benutzergruppe bedienen? Ich vermute, dass die Mehrheit MFA sowieso nicht verwenden wird.

Antworten Sie direkt auf diese E-Mail oder sehen Sie sie sich unter Gi tHubhttps an: //github.com/docker/machine/issues/2742#issuecomment -188910314.

@LoungeFlyZ Wollen Sie damit sagen, dass die azure xPlat-CLI ihren --username -Parameter entfernen sollte? Das wÀre eine bedeutende, bahnbrechende VerÀnderung, aber wahrscheinlich möglich.

Wahrscheinlich ja. Ich bin ĂŒberrascht, dass sie es immer noch haben ... aber ich verstehe warum.

@LoungeFlyZ Was ist mit Befehlszeilenbenutzern? Glaubst du, das wird sie stören?

@ pcgeek86 Ja natĂŒrlich. Es ist viel weniger bequem, das verstehe ich. Es ist jedoch eine Katastrophe, wenn ein Tool Ihren Benutzernamen und Ihr Passwort sammelt.

@LoungeFlyZ Da stimme ich auch zu. Aus Sicht der Sicherheit und Benutzerfreundlichkeit befinden wir uns an einem Konfliktpunkt. Was wĂ€re eine ideale Lösung fĂŒr die oben erwĂ€hnten Sicherheits- und Usability-Probleme, wenn Sie weit ĂŒber den Tellerrand hinaus denken?

@ pcgeek86 Ich sende Ihrer E-Mail einen binÀren Drop, bitte versuchen Sie es und lmk, wenn Sie es unpraktisch finden.

Hallo Leute, wir sind endlich kurz davor, einen brandneuen Azure-Treiber zu haben. Wir polieren ein paar Dinge auf und ich werde sehr bald eine Pull-Anfrage einreichen. In der Zwischenzeit können Sie die neue Version ausprobieren, bevor sie herauskommt, und Feedback geben. Bitte unten herunterladen:

versuche es jetzt mit dem darwin .. sauber. Nett.

Ahmet, sehr, sehr sauber.

~ / workspace / ahmet-machine â€čruby-2.2.1â€ș $ ld create -d azure \ 1 ↔
--azure-Abonnement-ID\.
--azure-ssh-user ops \
--azure-resource-group ahmetsmachine \
--azure-location eastus \
ahmetsmachine
Vorab-ErstellungsprĂŒfungen ausfĂŒhren ...
(ahmetsmachine) Microsoft Azure: Verwenden Sie zum Anmelden einen Webbrowser, um die Seite https://aka.ms/devicelogin zu öffnen zu authentifizieren.
(ahmetsmachine) Abgeschlossene ÜberprĂŒfungen der Maschine vor der Erstellung.
Maschine erstellen ...
(ahmetsmachine) Vorhandene Ressourcengruppe abfragen ... name = "ahmetsmachine"
(ahmetsmachine) Ressourcengruppe erstellen ... location = "eastus" name = "ahmetsmachine"
(ahmetsmachine) VerfĂŒgbarkeitssatz erstellen ... name = "Docker-Maschine"
(ahmetsmachine) Netzwerksicherheitsgruppe erstellen ... name = "ahmetsmachine-firewall" location = "eastus"
(ahmetsmachine) Abfrage, ob bereits ein virtuelles Netzwerk vorhanden ist ... name = "docker-machine-vnet" location = "eastus"
(ahmetsmachine) Subnetz erstellen ... cidr = "" name = "docker-machine" vnet = "docker-machine-vnet"
(ahmetsmachine) Öffentliche IP-Adresse erstellen ... name = "ahmetsmachine-ip"
(ahmetsmachine) Netzwerkschnittstelle erstellen ... name = "ahmetsmachine-nic"
(ahmetsmachine) Erstellen eines Speicherkontos "" in eastus
(ahmetsmachine) Erstellen einer virtuellen Maschine ... name = "ahmetsmachine" location = "eastus" size = "Standard_A2" username = "ops" osImage = " kanonisch: UbuntuServer : 14.04.3- LTS: latest "
Das Warten auf den Betrieb der Maschine kann einige Minuten dauern ...
Betriebssystem der erstellten Instanz erkennen ...
Warten auf die VerfĂŒgbarkeit von SSH ...
Den Provisioner erkennen ...
Bereitstellung mit Ubuntu (Emporkömmling) ...
Docker installieren ...
Kopieren von Zertifikaten in das lokale Maschinenverzeichnis ...
Kopieren von Zertifikaten auf den Remote-Computer ...
Festlegen der Docker-Konfiguration auf dem Remote-Daemon ...
ÜberprĂŒfen der Verbindung zum Docker ...
Docker ist betriebsbereit!
FĂŒhren Sie Folgendes aus, um zu sehen, wie Sie Ihren Docker-Client mit der Docker Engine verbinden, die auf dieser virtuellen Maschine ausgefĂŒhrt wird:Docker-Maschine-Darwin-x86_64 env ahmetsmachine

Ich werde jetzt die Windows- und Linux-Versionen ausprobieren. Nett. Info kam gleich hoch. Ich mag auch Ihre grundlegende Netzumgebung und Portauswahl sehr. Vielen Dank!

Es gibt derzeit ein Problem unter Windows, es wird nicht authentifiziert. Ich schlage vor, es vorerst mit anderen Plattformen zu versuchen. Danke @squillace!

OK, ich mache die Debian-Familie.

Ja, der Fehler unter Windows hÀngt damit zusammen, dass das Token in einen Token-Cache kopiert wird. Ich habe die Details heute Abend an

Prost,
Trevor Sullivan

funktioniert perfekt auf Minze 17.3.

@ pcgeek86 Bitte versuchen Sie diesen neuen Build fĂŒr Windows: http://cl.ly/3k2d0g2B3j0o/docker_machine_azure_rc2.zip Das Problem sollte jetzt behoben sein. Es hat nur bei mir funktioniert. (Obwohl es immer noch flockig ist, werden wir diese bald im Azure SDK reparieren und hier importieren. Ich werde hier weiterhin Builds bereitstellen, wenn wir fortfahren.)

Bitte versuchen Sie die Authentifizierung mit allen möglichen seltsamen Kontotypen (Microsoft-Konto, AAD ...), falls vorhanden. Dieser Authentifizierungsansatz funktioniert nur mit meinem Multi-Faktor-AD-Konto sowie meinem persönlichen Konto. Ich freue mich ĂŒber Ihr Feedback. Ich denke, wir können dies beim ersten Versuch richtig machen! :LĂ€cheln:

Ich habe es nicht mit persönlich versucht; Ich werde das jetzt tun.

Ich habe es frĂŒher in dieser Ausgabe unter OS X mit der BinĂ€rdatei versucht und Folgendes erhalten:

docker-machine-azure create -d azure --azure-location "North Europe"  --azure-resource-group "career-planner" --azure-subscription-id {ID} azure
Running pre-create checks...
(azure) Microsoft Azure: To sign in, use a web browser to open the page https://aka.ms/devicelogin. Enter the code DRHSTFLSD to authenticate.
(azure) Completed machine pre-create checks.
Creating machine...
(azure) Querying existing resource group...  name="career-planner"
(azure) Resource group "career-planner" already exists.
(azure) Creating availability set...  name="docker-machine"
(azure) Creating network security group...  name="azure-firewall" location="North Europe"
(azure) Querying if virtual network already exists...  name="docker-machine-vnet" location="North Europe"
(azure) Creating subnet...  name="docker-machine" vnet="docker-machine-vnet" cidr="192.168.0.0/16"
(azure) Creating public IP address...  name="azure-ip"
(azure) Creating network interface...  name="azure-nic"
(azure) Creating storage account "vhdsxfxg6xxswwqjih00e7co" in North Europe
(azure) Creating Virtual Machine...  name="azure" location="North Europe" size="Standard_A2" username="ubuntu" osImage="canonical:UbuntuServer:14.04.3-LTS:latest"
Waiting for machine to be running, this may take a few minutes...
Error creating machine: Error waiting for machine to be running: Maximum number of retries (60) exceeded

obwohl ich denke, es hat alle Ressourcen geschaffen.

@buckett Danke, hier geht es um das letzte Problem, das wir in azure go sdk ansprechen wollen. Wir warten derzeit nicht auf erstellte Ressourcen, bis sie ordnungsgemĂ€ĂŸ abgeschlossen sind.

Bevor ich die Pull-Anfrage an dieses Repo sende, plane ich, etwa 1.000 Maschinen zu erstellen, um zu sehen, wie zuverlĂ€ssig es ist. Wir sind bereits bei Funktionstests grĂŒn, aber es gibt einige Schuppen, wie ich bereits erwĂ€hnt habe.

@buckett hier ist eine neue Version mit einer Reihe von Korrekturen. Ich habe gerade angefangen, es zu testen, und es scheint ziemlich in Ordnung zu sein (bisher waren alle Fehler, die ich bekam, nicht mit Azure verbunden, Probleme mit passenden Repo-Flakines usw.).

Hier ist das BinĂ€rpaket fĂŒr unterstĂŒtzte Plattformen: Link http://cl.ly/fKvS

Ich hoffe, mit dieser Version eine PR an die Maschine senden zu können.

Ich habe den neuen Build heruntergeladen und versucht zu sehen, welche Maschinen ich hatte:

$ docker-machine-azure ls
(azure) Obtained access_token or refresh_token is stale. Please reauthenticate.
(azure) Microsoft Azure: To sign in, use a web browser to open the page https://aka.ms/devicelogin. Enter the code {removed} to authenticate.
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS
azure              azure        Timeout                                                 
default   *        virtualbox   Running   tcp://192.168.99.101:2376           v1.10.0   

Als ich dann versuchte, die veraltete Azure-Instanz zu entfernen, wurde ich aufgefordert, mich erneut anzumelden:

$ docker-machine-azure rm azure
About to remove azure
Are you sure? (y/n): y
(azure) NOTICE: Please check Azure portal/CLI to make sure you have no leftover resources to avoid unexpected charges.
(azure) Microsoft Azure: To sign in, use a web browser to open the page https://aka.ms/devicelogin. Enter the code {removed} to authenticate.
(azure) Virtual Machine does not exist. Skipping.  name="azure"
(azure) Network Interface does not exist. Skipping.  name="azure-nic"
(azure) Public IP does not exist. Skipping.  name="azure-ip"
(azure) Network Security Group does not exist. Skipping.  name="azure-firewall"
(azure) Attempting to clean up Availability Set resource...  name="docker-machine"
(azure) Attempting to clean up Subnet resource...  name="docker-machine"
(azure) Attempting to clean up Virtual Network resource...  name="docker-machine-vnet"
Successfully removed azure

Als ich dann eine neue Azure-Instanz erstellte, funktionierte sie bis zu einem gewissen Punkt und fiel dann um:

$ docker-machine-azure create -d azure ....
[..snipped..]
Error creating machine: Error in driver during machine creation: Panic in the driver: runtime error: invalid memory address or nil pointer dereference
goroutine 52 [running]:
runtime/debug.Stack(0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.6/libexec/src/runtime/debug/stack.go:24 +0x80
github.com/docker/machine/libmachine/drivers/rpc.(*StandardStack).Stack(0x2299078, 0x0, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/libmachine/drivers/rpc/server_driver.go:23 +0x29
github.com/docker/machine/libmachine/drivers/rpc.trapPanic(0xc82012ba28)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/libmachine/drivers/rpc/server_driver.go:129 +0x96
panic(0x11f78e0, 0xc82000a0f0)
    /usr/local/Cellar/go/1.6/libexec/src/runtime/panic.go:426 +0x4e9
github.com/docker/machine/drivers/azure/azureutil.osDiskStorageContainerURL(0xc820328780, 0xc8202c4468, 0x5, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azureutil/azureutil.go:709 +0x3d
github.com/docker/machine/drivers/azure/azureutil.osDiskStorageBlobURL(0xc820328780, 0xc8202c4468, 0x5, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azureutil/azureutil.go:697 +0x5c
github.com/docker/machine/drivers/azure/azureutil.AzureClient.CreateVirtualMachine(0x16c0590, 0x10, 0x17fb460, 0x20, 0x18ea160, 0x35, 0x17fb4e0, 0x24, 0x17627a0, 0x1d, ...)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azureutil/azureutil.go:446 +0x5f2
github.com/docker/machine/drivers/azure.(*Driver).Create.func10(0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azure.go:322 +0x20f
github.com/docker/machine/drivers/azure.(*Driver).Create(0xc8200c2a00, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azure.go:326 +0x461
github.com/docker/machine/libmachine/drivers/rpc.(*RPCServerDriver).Create(0xc82012d5a0, 0x2299078, 0x2299078, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/libmachine/drivers/rpc/server_driver.go:140 +0x7c
reflect.Value.call(0x108e980, 0x1518768, 0x13, 0x155ba18, 0x4, 0xc82012bed8, 0x3, 0x3, 0x0, 0x0, ...)
    /usr/local/Cellar/go/1.6/libexec/src/reflect/value.go:435 +0x120d
reflect.Value.Call(0x108e980, 0x1518768, 0x13, 0xc82012bed8, 0x3, 0x3, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.6/libexec/src/reflect/value.go:303 +0xb1
net/rpc.(*service).call(0xc82016a1c0, 0xc82012e000, 0xc820158fd0, 0xc820087880, 0xc82012dcc0, 0xd7d040, 0x2299078, 0x16, 0xd7d040, 0x2299078, ...)
    /usr/local/Cellar/go/1.6/libexec/src/net/rpc/server.go:383 +0x1c2
created by net/rpc.(*Server).ServeCodec
    /usr/local/Cellar/go/1.6/libexec/src/net/rpc/server.go:477 +0x49d

Das Entfernen der Docker-Maschine mit halbem Setup funktionierte fast vollstÀndig. Bis auf das virtuelle Netzwerk und das Speicherkonto wurde alles entfernt (durch Einchecken von https://portal.azure.com).

@buckett argh, ich kann nicht glauben, dass ich den Link fĂŒr einen Ă€lteren Build gesendet habe. Das tut mir leid. Könnten Sie bitte dieses versuchen: http://cl.ly/fKvS

Die virtuelle Maschine docker-machine --debug rm repro könnten, wĂ€re das großartig), aber das Speicherkonto wird nicht entfernt. Es ist kostenlos und wir bereinigen BetriebssystemdatentrĂ€ger, die wir auch beim Entfernen zuweisen.

Versuch mit neuem Build: Löschte gerade eine Maschine und auf halbem Weg bekam ich:

Error removing host "azure": azure.ServicePrincipalToken:WithAuthorization 0 Failed to refresh Service Principal Token for request to https://management.azure.com/subscriptions/fb56de48-cb6e-4d0b-8626-8faa062ada02/providers/Microsoft.Network/locations/northeurope/operations/33643d7c-82cc-40f4-8724-bd82de215338?api-version=2015-06-15 -- Original Error: Manually created ServicePrincipalToken does not contain secret material to retrieve a new access token.

Das Zeitlimit des neuen Builds fĂŒr docker-machine ls zum EinfĂŒgen des Authentifizierungstokens ist etwas zu kurz, da ich es nicht schaffen kann, einen Browser zu öffnen, das Authentifizierungstoken zu kopieren und einzufĂŒgen und zu klicken, um es zu akzeptieren und mich bei der richtigen Anmeldung anzumelden Konto und akzeptieren Sie die Berechtigungen.

Und wenn mein Laptop nicht in der Mitte der Maschinenerstellung angehalten wird, hat er einen neuen Host erstellt, auf dem Docker ausgefĂŒhrt wird (Magie, danke: Kuchen :). Ich habe beim Erstellen einen Fehler erhalten, aber ich konnte nach der Erstellung die Hallo-Welt ausfĂŒhren

Checking connection to Docker...
Error creating machine: Error checking the host: Error checking and/or regenerating the certs: There was an error validating certificates for host "13.69.192.88:2376": tls: DialWithDialer timed out
You can attempt to regenerate them using 'docker-machine regenerate-certs [name]'.
Be advised that this will trigger a Docker daemon restart which will stop running containers.

$ eval $(docker-machine-azure env azure)
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
03f4658f8b78: Pull complete 
a3ed95caeb02: Pull complete 
Digest: sha256:8be990ef2aeb16dbcb9271ddfe2610fa6658d13f6dfb8bc72074cc1ca36966a7
Status: Downloaded newer image for hello-world:latest

Hello from Docker.
This message shows that your installation appears to be working correctly.

Nachdem ich den Hallo-Welt-Container erfolgreich ausgefĂŒhrt hatte, habe ich auch die Zertifikate neu generiert und das hat gut funktioniert.

In einer sauberen Ressourcengruppe scheint das Entfernen des letzten Computers, auf dem Docker ausgefĂŒhrt wird, das Netzwerk nicht zu bereinigen (obwohl es versucht werden soll):

(azure) Attempting to clean up Virtual Network resource...  name="docker-machine-vnet"
(azure) DBG | Azure request  method="GET" request="https://management.azure.com/subscriptions/fb56de48-cb6e-4d0b-8626-8faa062ada02/resourceGroups/test/providers/Microsoft.Network/virtualnetworks/docker-machine-vnet?api-version=2015-06-15"
(azure) DBG | Azure response  status="200 OK" method="GET" request="https://management.azure.com/subscriptions/fb56de48-cb6e-4d0b-8626-8faa062ada02/resourceGroups/test/providers/Microsoft.Network/virtualnetworks/docker-machine-vnet?api-version=2015-06-15" x-ms-request-id="626af1d8-3f4b-4915-9a8a-f7a0d4844c53"
(azure) DBG | Azure response  request="https://management.azure.com/subscriptions/fb56de48-cb6e-4d0b-8626-8faa062ada02/resourceGroups/test/providers/Microsoft.Network/virtualnetworks/docker-machine-vnet?api-version=2015-06-15" x-ms-request-id="626af1d8-3f4b-4915-9a8a-f7a0d4844c53" status="200 OK" method="GET"
(azure) DBG | Virtual Network does not have any attached dependent resource.  name="docker-machine-vnet"
(azure) Removing Virtual Network resource...  name="docker-machine-vnet"
(azure) DBG | Azure request  method="DELETE" request="https://management.azure.com/subscriptions/fb56de48-cb6e-4d0b-8626-8faa062ada02/resourceGroups/test/providers/Microsoft.Compute/virtualMachines/docker-machine-vnet?api-version=2015-06-15"
(azure) DBG | Azure response  status="204 No Content" method="DELETE" request="https://management.azure.com/subscriptions/fb56de48-cb6e-4d0b-8626-8faa062ada02/resourceGroups/test/providers/Microsoft.Compute/virtualMachines/docker-machine-vnet?api-version=2015-06-15" x-ms-request-id="8799a451-211e-4f7d-a9d7-52b2e702c5f5"
(azure) DBG | Azure response  status="204 No Content" method="DELETE" request="https://management.azure.com/subscriptions/fb56de48-cb6e-4d0b-8626-8faa062ada02/resourceGroups/test/providers/Microsoft.Compute/virtualMachines/docker-machine-vnet?api-version=2015-06-15" x-ms-request-id="8799a451-211e-4f7d-a9d7-52b2e702c5f5"

Unter Mac OS X hat alles gut angefangen. Dann geschah Folgendes:

(azdh) Creating Virtual Machine...  name="azdh" location="westeurope" size="Standard_A2" username="ubuntu" osImage="canonical:UbuntuServer:14.04.3-LTS:latest"
Error creating machine: Error in driver during machine creation: Panic in the driver: runtime error: invalid memory address or nil pointer dereference
goroutine 90 [running]:

Hier ist das vollstÀndige Protokoll:

Trevors-MBP:bin trevorsullivan$ ./docker-machine-Darwin-x86_64 create --driver azure --azure-location westeurope --azure-subscription-id 1c9fd9f5-a2dc-4cc9-a73c-cab0ee4a95a1 --azure-resource-group CloudAcademyAutomation azdh
Running pre-create checks...
(azdh) Microsoft Azure: To sign in, use a web browser to open the page https://aka.ms/devicelogin. Enter the code EDPKYDZ2X to authenticate.
(azdh) Completed machine pre-create checks.
Creating machine...
(azdh) Querying existing resource group...  name="CloudAcademyAutomation"
(azdh) Resource group "CloudAcademyAutomation" already exists.
(azdh) Creating availability set...  name="docker-machine"
(azdh) Creating network security group...  name="azdh-firewall" location="westeurope"
(azdh) Querying if virtual network already exists...  location="westeurope" name="docker-machine-vnet"
(azdh) Creating subnet...  name="docker-machine" vnet="docker-machine-vnet" cidr="192.168.0.0/16"
(azdh) Creating public IP address...  name="azdh-ip"
(azdh) Creating network interface...  name="azdh-nic"
(azdh) Creating storage account "vhdsxej59xu1xauhx7kaqs2e" in westeurope
(azdh) Creating Virtual Machine...  name="azdh" location="westeurope" size="Standard_A2" username="ubuntu" osImage="canonical:UbuntuServer:14.04.3-LTS:latest"
Error creating machine: Error in driver during machine creation: Panic in the driver: runtime error: invalid memory address or nil pointer dereference
goroutine 90 [running]:
runtime/debug.Stack(0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.6/libexec/src/runtime/debug/stack.go:24 +0x80
github.com/docker/machine/libmachine/drivers/rpc.(*StandardStack).Stack(0x2299078, 0x0, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/libmachine/drivers/rpc/server_driver.go:23 +0x29
github.com/docker/machine/libmachine/drivers/rpc.trapPanic(0xc8204a3a38)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/libmachine/drivers/rpc/server_driver.go:129 +0x96
panic(0x11f78e0, 0xc82000a0b0)
    /usr/local/Cellar/go/1.6/libexec/src/runtime/panic.go:426 +0x4e9
github.com/docker/machine/drivers/azure/azureutil.osDiskStorageContainerURL(0xc82025db80, 0xc8204d0118, 0x4, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azureutil/azureutil.go:709 +0x3d
github.com/docker/machine/drivers/azure/azureutil.osDiskStorageBlobURL(0xc82025db80, 0xc8204d0118, 0x4, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azureutil/azureutil.go:697 +0x5c
github.com/docker/machine/drivers/azure/azureutil.AzureClient.CreateVirtualMachine(0x16c0590, 0x10, 0x17fb460, 0x20, 0x18ea160, 0x35, 0x17fb4e0, 0x24, 0x17627a0, 0x1d, ...)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azureutil/azureutil.go:446 +0x5f2
github.com/docker/machine/drivers/azure.(*Driver).Create.func10(0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azure.go:322 +0x20f
github.com/docker/machine/drivers/azure.(*Driver).Create(0xc8200d0a00, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/drivers/azure/azure.go:326 +0x461
github.com/docker/machine/libmachine/drivers/rpc.(*RPCServerDriver).Create(0xc82012eec0, 0x2299078, 0x2299078, 0x0, 0x0)
    /Users/alp/workspace/gopath-machine/src/github.com/docker/machine/libmachine/drivers/rpc/server_driver.go:140 +0x7c
reflect.Value.call(0x108e980, 0x1518768, 0x13, 0x155ba18, 0x4, 0xc8204a3ee8, 0x3, 0x3, 0x0, 0x0, ...)
    /usr/local/Cellar/go/1.6/libexec/src/reflect/value.go:435 +0x120d
reflect.Value.Call(0x108e980, 0x1518768, 0x13, 0xc8204a3ee8, 0x3, 0x3, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.6/libexec/src/reflect/value.go:303 +0xb1
net/rpc.(*service).call(0xc82012d5c0, 0xc820013e00, 0xc820212070, 0xc820091880, 0xc82020e6a0, 0xd7d040, 0x2299078, 0x16, 0xd7d040, 0x2299078, ...)
    /usr/local/Cellar/go/1.6/libexec/src/net/rpc/server.go:383 +0x1c2
created by net/rpc.(*Server).ServeCodec
    /usr/local/Cellar/go/1.6/libexec/src/net/rpc/server.go:477 +0x49d

Prost,
Trevor Sullivan

@ pcgeek86 scheint, als wĂŒrden Sie RC3-BinĂ€rdateien verwenden, die ich zuvor gesendet habe? Kannst du bitte rc4 ausprobieren?

@ahmetalpbalkan Diesmal wurde der Docker-Host in Azure erstellt. Ich werde versuchen, ein Image dafĂŒr bereitzustellen.

@buckett Sie haben Recht, die Autorisierung im Befehl ls wird ein Problem sein, da das Zeitlimit ĂŒberschritten wird , wĂ€hrend wir zur Autorisierung auffordern. Ich habe derzeit keine Lösung dafĂŒr, aber ich denke, das wird nicht oft eine große Sache sein, es funktioniert in create / rm . Ich werde das Problem des virtuellen Netzwerks debuggen. Vielen Dank fĂŒr die Berichterstattung.

@ pcgeek86 danke fĂŒr den Versuch.

@buckett Es wĂ€re interessant zu sehen, ob es einen Unterschied zwischen der ZeitĂŒberschreitung bei diesem Docker-Computer und der Azure-CLI gibt. Das werde ich morgen sehen.

@quillace diese beiden haben nichts miteinander zu ls erwartet der Treiber, dass der Treiber innerhalb von etwa 10 Sekunden antwortet. Wenn Sie sich nicht innerhalb kurzer Zeit authentifizieren können, tritt eine ZeitĂŒberschreitung auf.

Ah schön. Das ist ziemlich kurz, wenn Sie den Auth-Moment treffen.

@buckett von Ihrer Ausgabe Ich habe festgestellt, dass wir versucht haben, die VM anstelle von VNet zu löschen, wĂ€hrend wir VNet bereinigt haben :) Ich habe es jetzt behoben. Neuere Builds haben dieses Problem nicht. Vielen Dank fĂŒr die Kenntnisnahme und Berichterstattung!

docker-machine ssh {machine} scheint eine schöne lange ZeitĂŒberschreitung zu haben. Wenn das Authentifizierungstoken ablĂ€uft, habe ich es gerade erneuert, indem ich nur eine SSH-Verbindung hergestellt habe, und dann muss ich es fĂŒr ein paar Stunden verwenden.

@ahmetalpbalkan Wenn Sie die Freigabe einer Azure-VM docker-machine beanstandet.

Trevors-MBP:bin 3 trevorsullivan$ ./docker-mac ls
(azdh) PowerState "deallocated" does not map to a docker-machine state.
(azdh) PowerState "deallocated" does not map to a docker-machine state.
NAME         ACTIVE   DRIVER         STATE     URL                         SWARM   DOCKER    ERRORS
azdh         -        azure                                                        Unknown
dh           -        vmwarefusion   Running   tcp://172.16.217.129:2376           v1.10.2
dockerhost   -        virtualbox     Stopped                                       Unknown

@ pcgeek86 schöner Fang. Lassen Sie es so aussehen, als wÀre es gestoppt.

@ Buckett , das ist ein schöner Trick. Übrigens sollten Ihre Anmeldeinformationen nicht vor 2 Wochen ablaufen (fordert Sie auf, den Browser zu öffnen) (es sei denn, Sie löschen $ HOME / .docker / machine). Klingt das nicht nach Ihrer Erfahrung?

Hier ist eine neue Version, die das PowerState-Problem und das Problem der Bereinigung des virtuellen Netzwerks beheben sollte: http://cl.ly/fLkb

@ahmetalpbalkan Danke, das funktioniert besser. Ein weiterer Fehler ist jedoch, dass bei Änderungen der öffentlichen IP-Adresse nach einem Neustart eine Ausnahme von ungĂŒltigen Anmeldeinformationen ausgelöst wird.

Trevors-MBP:bin 4 trevorsullivan$ ./docker-machine-Darwin-x86_64 ls
NAME         ACTIVE   DRIVER         STATE     URL                         SWARM   DOCKER    ERRORS
azdh         -        azure          Running   tcp://40.118.175.219:2376           Unknown   Unable to query docker version: Get https://40.118.175.219:2376/v1.15/version: x509: certificate is valid for 104.42.125.236, not 40.118.175.219
dh           -        vmwarefusion   Running   tcp://172.16.217.129:2376           v1.10.2
dockerhost   -        virtualbox     Stopped                                       Unknown

@ pcgeek86 Ich sehe, dass dies derselbe Computer ist, den Sie vom Azure-Portal freigegeben haben. Docker-Maschine gibt normalerweise keine Freigabe auf, es stoppt nur Ihre VM und wenn Sie die Zuordnung aufheben, erhalten Sie eine neue IP-Adresse.

Ich denke die Fragen hier sind:

  1. Sollte der Azure-Treiber eine statische IP fĂŒr Computer zuweisen - etwas, das den Benutzer mehr kostet? (kann vielleicht ein Argument sein)
  2. Sollte dieses Szenario unterstĂŒtzt werden, in dem der Benutzer die VM außerhalb der Docker-Maschine verwaltet / interveniert?

@ahmetalpbalkan Ja, das ist die gleiche Maschine. Ich habe die CLI azure xplat verwendet, um die Zuordnung der VM aufzuheben und sie einige Stunden spÀter erneut zu starten.

Meiner Meinung nach:

  1. Docker ist nur nĂŒtzlich, wenn es mit einer statischen IP verwaltet wird. Daher sollte dies eine Voraussetzung fĂŒr Docker-Hosts unter Azure sein.
  2. Nein, aber statische IP wird immer noch eine Voraussetzung sein.

@ pcgeek86 Sie könnten Recht haben. Ich ging davon aus, dass Docker-Machine den Befehl docker-machine ip <vm> , um die IP jedes Mal abzurufen, wenn sie den Computer verbindet, aber anscheinend ist sie auf statische IP angewiesen, um Zertifikate zu generieren (Sie können dies durch Verwendung von docker-machine regenerate-certs abmildern). .

Maintainer: Denken Sie, dass Maschinentreiber standardmĂ€ĂŸig statische externe IP-Adressen zuweisen sollten (auch wenn diese nicht kostenlos sind)?

@ pcgeek86 Ich habe gerade das gleiche Verhalten im Google-Treiber beobachtet. StandardmĂ€ĂŸig werden kurzlebige öffentliche IP-Adressen verwendet, und beim Neustart der Google VM vom Portal wird derselbe TLS-Zertifikatfehler angezeigt. Ich denke, du sollst das nicht tun. : P.

Ich hoffe jedoch, dass ich in Zukunft das boolesche Flag --azure-static-public-ip hinzufĂŒgen kann, aber dies wird nicht das Standardverhalten sein, da die statische IP-Zuweisung implizite Kosten fĂŒr den Benutzer verursacht.

@ahmetalpbalkan funktioniert regenerate-certs in diesem Fall? Alle drei meiner VMs haben funktioniert, aber dann habe ich sie abgerissen. Keine Probleme, aber wenn regenerate-certs funktioniert ....

@squillace Ja, dafĂŒr ist es konzipiert. Falls Sie die Zertifikate verlieren, können Sie sie ĂŒber SSH neu generieren.

@ahmetalpbalkan , das scheint die Lösung zu sein, die Docker bereits implementiert hat. Ich bin im ASM dm darauf gestoßen, und das erneute Erstellen hat gut funktioniert. FĂŒr die Produktion wĂŒrden Sie zu statisch gehen.

@squillace @ahmetalpbalkan Ausgezeichnet, gut zu wissen, dass docker regenerate-certs funktionieren wird. WĂ€re in der Produktion jedoch unbedingt eine statische IP erforderlich? Was ist, wenn Sie stattdessen den DNS-Namen verwenden? Ist das eine Option fĂŒr Docker? Das könnte tatsĂ€chlich helfen, das Zertifikatsproblem zu umgehen.

@ahmetalpbalkan Meine Anmeldeinformationen scheinen einige Stunden zu dauern. Es ist kein Tag vergangen, ohne sich erneut anmelden zu mĂŒssen. Ich lösche nichts in meinem Home-Verzeichnis.

@buckett Das klingt sicherlich nach einem Fehler, den wir nicht reproduzieren konnten. Könnten Sie bitte docker-machine --debug ssh <vm> ausfĂŒhren (ssh durch ip / status ersetzen, wie Sie möchten) und die Debug-Ausgabe an mich senden (ahmetb bei microsoft com) (oder in a einfĂŒgen) gist) wann werden Sie das nĂ€chste Mal zur Authentifizierung aufgefordert?

Bearbeiten: Follow-up mit ihm offline per E-Mail.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen