Machine: Pilote Azure - version du gestionnaire de ressources

Créé le 5 janv. 2016  ·  69Commentaires  ·  Source: docker/machine

Je pense avoir raison de dire que la prise en charge actuelle de docker-machine sur Azure utilise le modèle de déploiement classique. Ce serait formidable de prendre également en charge le modèle Resource Manager (puisque c'est ce que MS recommande pour les nouveaux déploiements).

driveazure kinenhancement

Tous les 69 commentaires

: +1:

+1

+1

Il est prévu de déplacer le fournisseur Azure de docker-machine pour utiliser Azure Resource Manager - voir # 496

@lizrice Je travaille actuellement activement sur ce sujet. Nous sommes conscients de la demande pour cela, attendez donc quelque chose bientôt. Je mettrai à jour ce fil une fois que nous aurons quelque chose de nouveau.

C'est une excellente nouvelle @ahmetalpbalkan :-)

+1

Cela sera très utile! Merci de travailler activement dessus.

J'en ai vraiment besoin. Vous devez également éviter d'utiliser des certificats pour vous authentifier, sauf si vous utilisez un principal de service Azure Active Directory. Des progrès @ahmetalpbalkan?

À votre santé,
Trevor Sullivan

@ pcgeek86 nous ne ferons pas la merde du principal du service. Le processus d'authentification ressemblera exactement à l'authentification CLI multiplateforme Azure (commande "azure login" ). Toutes les 2 semaines, il vous demandera d'ouvrir une fenêtre de navigateur et de cliquer sur un bouton pour autoriser l'application.

@ahmetalpbalkan Excellent, donc vous aurez également --username paramètre

@ pcgeek86 , non. Azure CLI ne nécessite pas le paramètre de nom d'utilisateur. Il est là pour la compatibilité ascendante.

@ahmetalpbalkan je n'ai pas dit obligatoire. Le paramètre --username vous permet de spécifier le nom d'utilisateur Azure Active Directory (AAD). Comment est cette «rétrocompatibilité»? Que proposez-vous pour la mise en œuvre finale?

L'authentification basée sur les certificats Azure Service Management (ASM) est la «compatibilité descendante».

@ pcgeek86 hmm, je n'ai jamais réalisé qu'il était utilisé pour les noms d'utilisateur AAD. Lorsque vous allez sur https://aka.ms/devicelogin , cela vous permet-il de spécifier votre nom d'utilisateur AAD là-bas? Si la même tâche peut être effectuée sans azure login (sans --username ), j'ai l'intention de continuer ainsi.

@ahmetalpbalkan Vous devez probablement être en mode ARM ( azure config arm ) pour utiliser l'authentification AAD avec ARM. Je n'utilise pas vraiment le "mode" ASM très souvent.

Oui, vous pouvez utiliser le nom d'utilisateur AAD avec https://aka.ms/devicelogin. Cependant, je préfère éviter d'aller dans un navigateur et spécifier à la place le nom d'utilisateur avec --username . Fonctionne mieux dans les scénarios de texte uniquement. :)

Si la même tâche peut être effectuée sans connexion Azure (sans --username), j'ai l'intention de la garder ainsi.

Donc, juste pour être sûr de bien comprendre, avez-vous l'intention d'exiger de l'utilisateur qu'il utilise un navigateur Web pour effectuer l'authentification, au lieu de taper son mot de passe sur la ligne de commande?

Avec un compte qui nécessite 2fa, vous devrez de toute façon vous authentifier. Je ne suis pas sûr que ce soit une grande optimisation pour le cas 2fa.

@squillace Pour les utilisateurs d'authentification

À ce stade, cela rend la tâche plus difficile pour tout le monde, et n'allez-vous pas faire chier les gens en les forçant à utiliser un navigateur Web pour authentifier un outil de ligne de commande?

En fait, pourquoi ne pas aller plus loin et prendre en charge MFA à partir de la ligne de commande?

Vous ne devez pas collecter les noms d'utilisateur et les mots de passe en dehors de l'écran de connexion AAD normal. C'est une mauvaise pratique et peu sûre. De plus, il y a techniquement trop de scénarios à couvrir pour que cela fonctionne réellement. 2FA n'est pas possible sans ouvrir un navigateur, par exemple ADFS sur site, porte-clés sécurisé, authentification par carte à puce, etc.

Je ne veux pas répondre à un seul groupe, mais plutôt le scénario de base doit couvrir tout.

Envoyé depuis Outlook Mo bilehttps: //aka.ms/blhgte

Le jeudi 25 février 2016 à 10h11 -0800, "Trevor Sullivan" < [email protected] [email protected] > a écrit:

@squil lacehttps: //github.com/squillace Pour les utilisateurs d'authentification

Répondez directement à cet e-mail ou consultez-le sur Gi tHubhttps: //github.com/docker/machine/issues/2742#issuecomment -188910314.

@LoungeFlyZ Vous dites donc que la CLI azure xPlat devrait supprimer son paramètre --username ? Ce serait un changement important et révolutionnaire, mais probablement possible.

Probablement ouais. Je suis surpris qu'ils l'aient encore ... mais je comprends pourquoi.

@LoungeFlyZ Et les utilisateurs de ligne de commande? Pensez-vous que cela les perturbera?

@ pcgeek86 Oui, bien sûr. C'est beaucoup moins pratique, je le comprends. Mais avoir un outil pour collecter votre nom d'utilisateur et votre mot de passe est un désastre qui attend.

@LoungeFlyZ Je suis d'accord là aussi. Il semble que nous soyons à un point de conflit du point de vue de la sécurité et de la convivialité. En sortant des sentiers battus, quelle serait la solution idéale pour les problèmes de sécurité et d'utilisabilité que nous avons mentionnés ci-dessus?

@ pcgeek86 J'envoie à votre e-mail une goutte binaire, veuillez l'essayer et lmk si vous trouvez que cela n'est pas pratique.

Bonjour à tous, nous sommes enfin sur le point d'avoir un tout nouveau pilote Azure. Nous peaufinons certaines choses et je soumettrai une pull request très bientôt. En attendant, vous pouvez essayer la nouvelle version avant sa sortie et donner votre avis. Veuillez télécharger ci-dessous:

essayer le darwin maintenant .. propre. Agréable.

Ahmet, très, très propre.

~ / workspace / ahmet-machine ‹ruby-2.2.1› $ ld create -d azure \ 1 ↵
--azure-subscription-id\
--azure-ssh-user ops \
--azure-resource-group ahmetsmachine \
--azure-location eastus \
ahmetsmachine
Exécution des vérifications de pré-création ...
(ahmetsmachine) Microsoft Azure: pour vous connecter, utilisez un navigateur Web pour ouvrir la page https://aka.ms/devicelogin. Entrer le codepour s'authentifier.
(ahmetsmachine) Vérifications de pré-création de la machine terminées.
Création de la machine ...
(ahmetsmachine) Interrogation du groupe de ressources existant ... name = "ahmetsmachine"
(ahmetsmachine) Création d'un groupe de ressources ... location = "eastus" name = "ahmetsmachine"
(ahmetsmachine) Création d'un jeu de disponibilité ... name = "docker-machine"
(ahmetsmachine) Création d'un groupe de sécurité réseau ... name = "ahmetsmachine-firewall" location = "eastus"
(ahmetsmachine) Demande si le réseau virtuel existe déjà ... name = "docker-machine-vnet" location = "eastus"
(ahmetsmachine) Création du sous-réseau ... cidr = "" name = "docker-machine" vnet = "docker-machine-vnet"
(ahmetsmachine) Création d'une adresse IP publique ... name = "ahmetsmachine-ip"
(ahmetsmachine) Création de l'interface réseau ... name = "ahmetsmachine-nic"
(ahmetsmachine) Création du compte de stockage "" dans eastus
(ahmetsmachine) Création d'une machine virtuelle ... name = "ahmetsmachine" location = "eastus" size = "Standard_A2" username = "ops" osImage = " canonical: UbuntuServer : 14.04.3- LTS: dernier "
En attendant que la machine fonctionne, cela peut prendre quelques minutes ...
Détection du système d'exploitation de l'instance créée ...
En attente de la disponibilité de SSH ...
Détection de l'approvisionneur ...
Provisionnement avec ubuntu (upstart) ...
Installation de Docker ...
Copie des certificats dans le répertoire de la machine locale ...
Copie de certificats sur la machine distante ...
Définition de la configuration de Docker sur le démon distant ...
Vérification de la connexion à Docker ...
Docker est opérationnel!
Pour voir comment connecter votre client Docker au moteur Docker s'exécutant sur cette machine virtuelle, exécutez:docker-machine-Darwin-x86_64 env ahmetsmachine

Je vais essayer les versions Windows et Linux maintenant. Agréable. L'information est venue tout de suite. J'aime aussi beaucoup votre environnement net de base et vos choix de ports. Merci!

Il y a actuellement un problème sur Windows, il ne s'authentifie pas. Je suggère d'essayer avec d'autres plates-formes pour le moment. Merci @squillace!

OK, je vais faire la famille Debian.

Oui, le bogue sous Windows est lié au fait que le jeton est copié dans un cache de jetons. Envoyé les détails à @ahmetalpbalkan plus tôt ce soir.

À votre santé,
Trevor Sullivan

fonctionne parfaitement sur la menthe 17.3.

@ pcgeek86 veuillez essayer cette nouvelle version pour Windows: http://cl.ly/3k2d0g2B3j0o/docker_machine_azure_rc2.zip le problème devrait être résolu maintenant. Cela a juste fonctionné pour moi. (Bien que ce soit encore floconneux, nous allons bientôt les corriger dans Azure SDK et les importer ici. Je continuerai à fournir des versions ici au fur et à mesure.)

Veuillez essayer l'authentification avec toutes sortes de types de comptes étranges (compte Microsoft, AAD ...) si vous en avez. Cette approche d'authentification fonctionne uniquement avec mon compte AD multi-facteurs ainsi qu'avec mon compte personnel. J'apprécie vos commentaires à ce sujet, j'ai l'impression que nous pouvons y parvenir du premier coup! :sourire:

Je ne l'ai pas essayé personnellement; Je vais faire ça maintenant.

Je viens d'essayer le binaire plus tôt dans ce numéro sur OS X et j'ai obtenu:

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

même si je pense qu'il a créé toutes les ressources.

@buckett Merci, il s'agit du dernier problème que nous essayons de résoudre dans azure go sdk. Nous n'attendons actuellement pas les ressources créées jusqu'à ce qu'elles soient correctement terminées.

Avant d'envoyer la demande d'extraction à ce dépôt, je prévois de créer quelque 1000 machines pour voir à quel point elle est fiable. Nous sommes déjà verts sur les tests fonctionnels, mais il y a des flocons comme je l'ai mentionné plus tôt.

@buckett voici une nouvelle version avec un tas de correctifs. J'ai commencé à le tester et cela semble à peu près correct (jusqu'à présent, tous les échecs que j'ai rencontrés n'étaient pas liés à Azure, des problèmes de référentiel apt, etc.).

Voici le pack binaire pour les plates-formes prises en charge: lien http://cl.ly/fKvS

J'espère envoyer un PR à la machine avec cette version.

J'ai téléchargé la nouvelle version et essayé de voir quelles machines j'avais:

$ 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   

mais ensuite, lorsque j'ai tenté de supprimer l'instance azure périmée, on m'a demandé de me connecter à nouveau:

$ 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

Lorsque j'ai ensuite créé une nouvelle instance Azure, cela fonctionne jusqu'à un certain point, puis est tombé:

$ 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

Le retrait de la machine docker à moitié configurée a presque tout fonctionné. Tout a été supprimé à l'exception du réseau virtuel et du compte de stockage (en vérifiant https://portal.azure.com).

@buckett argh, je ne peux pas croire que j'ai envoyé le lien pour une version plus ancienne. Désolé pour ça. Pourriez-vous essayer celui-ci: http://cl.ly/fKvS

La machine virtuelle docker-machine --debug rm ce serait génial) mais le compte de stockage ne sera pas supprimé. Il est gratuit et nous nettoyons également les disques du système d'exploitation que nous allouons lors de la suppression.

Essayer avec une nouvelle construction: je supprimais juste une machine et à mi-chemin j'ai obtenu:

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.

Le délai d'expiration de la nouvelle version sur docker-machine ls pour coller dans le jeton d'authentification est un peu trop court car je ne parviens pas à ouvrir un navigateur, copiez et collez le jeton d'authentification et cliquez pour l'accepter, connectez-vous au bon compte et acceptez les autorisations.

Et quand mon ordinateur portable n'est pas suspendu à mi-chemin de la création de la machine, il a créé un nouvel hôte exécutant le docker (magie, merci,: gâteau :). J'ai eu une erreur lors de la création mais j'ai pu exécuter hello-world après la création

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.

Après avoir exécuté avec succès le conteneur hello-world, j'ai également régénéré les certificats et cela a bien fonctionné.

Dans un groupe de ressources propres, la suppression de la dernière machine exécutant le docker ne semble pas nettoyer le réseau (bien qu'il semble essayer):

(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"

Tout a bien commencé sous Mac OS X. Ensuite, cela s'est produit:

(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]:

Voici le journal complet:

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

À votre santé,
Trevor Sullivan

@ pcgeek86 semble que vous utilisez des binaires rc3 que j'ai envoyés plus tôt? Pouvez-vous essayer rc4?

@ahmetalpbalkan A travaillé cette fois pour créer l'hôte Docker dans Azure. Je vais essayer de déployer une image dessus.

@buckett vous avez raison, l'autorisation dans la commande ls va être un problème car elle expire pendant que nous demandons l'autorisation. Je n'ai actuellement aucune solution pour cela, mais je pense que ce ne sera pas souvent un gros problème, cela fonctionne dans create / rm . Je vais déboguer le problème du réseau virtuel. Merci d'avoir signalé.

@ pcgeek86 merci d'avoir essayé.

@buckett, il serait intéressant de voir s'il y a une différence entre le délai d'expiration avec cette machine

@squillace ces deux ne sont pas liés. Dans la commande ls machine s'attend à ce que le pilote réponde dans les 10 secondes environ, si vous ne pouvez pas vous authentifier dans un court laps de temps, il expirera.

Ah, bien. C'est assez court si vous atteignez le moment d'authentification.

@buckett de votre sortie J'ai réalisé que nous

docker-machine ssh {machine} semble avoir un long délai d'expiration, donc si le jeton d'authentification expire, je viens de le renouveler en établissant simplement une connexion ssh, puis je l'ai à utiliser pendant quelques heures.

@ahmetalpbalkan Lorsque vous désallouez ( docker-machine plaint.

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 belle prise. Laisse-moi donner l'impression qu'il est arrêté.

@buckett c'est une belle astuce. Au fait, vos informations d'identification ne devraient pas expirer (vous demande d'ouvrir le navigateur) avant 2 semaines (sauf si vous supprimez $ HOME / .docker / machine). Est-ce quelque chose qui ne ressemble pas à votre expérience?

Voici une nouvelle version qui devrait résoudre le problème de PowerState et le problème de nettoyage du réseau virtuel: http://cl.ly/fLkb

@ahmetalpbalkan Merci, cela fonctionne mieux. Cependant, un autre bogue est que lorsque l'adresse IP publique change, après un redémarrage, une exception est levée à partir d'informations d'identification non valides.

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 Je vois que c'est la même machine que vous avez désallouée du portail Azure. normalement, docker-machine ne désalloue pas, il arrête uniquement votre VM et lorsque vous désallouez, vous obtenez une nouvelle adresse IP.

Je suppose que les questions ici sont:

  1. azure driver doit-il allouer une adresse IP statique aux machines - quelque chose qui coûte plus cher à l'utilisateur? (peut-être peut-être un argument)
  2. ce scénario dans lequel l'utilisateur gère / intervient la VM en dehors de la machine fixe doit être pris en charge?

@ahmetalpbalkan Oui, c'est la même machine. J'ai utilisé la CLI azure xplat pour désallouer la VM, puis la redémarrer quelques heures plus tard.

À mon avis:

  1. Docker n'est utile que lorsqu'il est géré avec une adresse IP statique. Par conséquent, cela devrait être une exigence pour les hôtes Docker sur Azure.
  2. Non, mais l'adresse IP statique sera toujours une exigence.

@ pcgeek86 vous avez peut-être raison. Mon hypothèse était que docker-machine utiliserait la commande docker-machine ip <vm> pour récupérer l'adresse IP chaque fois qu'elle se connecte à la machine, mais apparemment, elle repose sur une adresse IP statique pour générer des certificats (vous pouvez atténuer cela en utilisant docker-machine regenerate-certs ) .

Maintainers: pensez-vous que les pilotes de machine devraient allouer des adresses IP externes statiques par défaut (même si elles ne sont pas gratuites)?

@ pcgeek86 Je viens d'observer le même comportement dans le pilote Google. Il utilise des adresses IP publiques éphémères par défaut et j'obtiens la même erreur de certificat TLS lorsque je redémarre la VM Google à partir du portail. Je suppose que vous n'êtes pas censé faire ça. : P

Mais j'espère ajouter le drapeau booléen --azure-static-public-ip à l'avenir, mais ce ne sera pas le comportement par défaut car l'allocation IP statique a un coût implicite pour l'utilisateur.

@ahmetalpbalkan fonctionne-t-il dans ce cas-là? Mes trois machines virtuelles ont fonctionné, mais je les ai ensuite détruites. Aucun problème, mais si regénérer-certs fonctionne ...

@squillace oui, c'est ce pour quoi il est conçu, au cas où vous perdriez les certificats, vous pouvez les régénérer via SSH.

@ahmetalpbalkan qui semble être la solution que docker a déjà implémentée. Je suis tombé sur cela dans le dm ASM, et la régénération a bien fonctionné. pour la production, vous iriez au statique.

@squillace @ahmetalpbalkan Excellent, bon de savoir que docker regenerate-certs fonctionnera. Une adresse IP statique serait-elle nécessairement requise en production? Et si vous utilisez plutôt le nom DNS? Est-ce une option pour Docker? Cela pourrait en fait aider à contourner le problème de cert.

@ahmetalpbalkan Mes informations d'identification semblent durer quelques heures. Pas un jour ne s'est écoulé sans avoir à se reconnecter. Je n'efface rien de mon répertoire personnel.

@buckett Cela ressemble certainement à un bug que nous n'avons pas été en mesure de reproduire. Pourriez-vous s'il vous plaît exécuter docker-machine --debug ssh <vm> (remplacez ssh par ip / status comme vous le souhaitez) et envoyez-moi la sortie de débogage (ahmetb sur microsoft com) (ou collez-la dans un gist) lorsque vous êtes invité à vous authentifier la prochaine fois?

edit: suivi avec lui hors ligne par e-mail.

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