2015-11-17 11 views
7

Ho installato Docker Toolbox in Windows 8.1 e ho seguito il tutorial di installazione. Quando si arriva al punto in cui si è create and push your own imag e, ho ricevuto questo errore quando ho tentato di eseguire docker login ....Perché il "docker login" non funziona nel Docker Quickstart Terminal ma funziona dal computer predefinito?

### VIA Docker Quickstart Terminal 
### docker login --username=myuser --password="mypass" [email protected] 
time="2015-11-17T03:20:58.160803558Z" level=debug msg="Calling POST /v1.21/auth" 
time="2015-11-17T03:20:58.160838971Z" level=info msg="POST /v1.21/auth" 
time="2015-11-17T03:20:58.169033324Z" level=debug msg="hostDir: /etc/docker/certs.d/https:/registry-win-tp3.docker.io/v1" 
time="2015-11-17T03:20:58.169071565Z" level=debug msg="pinging registry endpoint https://registry-win-tp3.docker.io/v1/" 
time="2015-11-17T03:20:58.169084660Z" level=debug msg="attempting v1 ping for registry endpoint https://registry-win-tp3.docker.io/v1/" 
time="2015-11-17T03:20:58.898542338Z" level=debug msg="Error unmarshalling the _ping PingResult: invalid character '<' looking for beginning of value" 
time="2015-11-17T03:20:58.898803841Z" level=debug msg="PingResult.Version: \"\"" 
time="2015-11-17T03:20:58.898818084Z" level=debug msg="Registry standalone header: ''" 
time="2015-11-17T03:20:58.898836197Z" level=debug msg="PingResult.Standalone: true" 
time="2015-11-17T03:20:58.898853685Z" level=debug msg="attempting v1 login to registry endpoint https://registry-win-tp3.docker.io/v1/" 
time="2015-11-17T03:20:59.478756938Z" level=error msg="Handler for POST /v1.21/auth returned error: Unexpected status code [403] : <html><body><h1>403 Forbidden</h1>\nRequest forbidden by administrative rules.\n</body></html>\n\n" 
time="2015-11-17T03:20:59.478815334Z" level=error msg="HTTP Error" err="Unexpected status code [403] : <html><body><h1>403 Forbidden</h1>\nRequest forbidden by administrative rules.\n</body></html>\n\n" statusCode=500 

cercare di risolvere il problema, ho provato a fare funzionare docker login ... dall'interno del predefinito Docker VM. E lì funziona!

### VIA default virtual machine (192.168.99.100) 
### docker login --username=myuser --password="mypass" --[email protected] https://index.docker.io/v1/ 
time="2015-11-17T03:20:46.053333255Z" level=debug msg="Calling POST /v1.21/auth" 
time="2015-11-17T03:20:46.053404176Z" level=info msg="POST /v1.21/auth" 
time="2015-11-17T03:20:46.082796012Z" level=debug msg="hostDir: /etc/docker/certs.d/https:/index.docker.io/v1" 
time="2015-11-17T03:20:46.082930763Z" level=debug msg="pinging registry endpoint https://index.docker.io/v1/" 
time="2015-11-17T03:20:46.082946790Z" level=debug msg="attempting v1 ping for registry endpoint https://index.docker.io/v1/" 
time="2015-11-17T03:20:46.082959103Z" level=debug msg="attempting v1 login to registry endpoint https://index.docker.io/v1/" 

Ho notato che stanno utilizzando due URL diversi e che il primo riscontra un errore di analisi. Le credenziali sono ovviamente corrette poiché funzionano all'interno della VM, a meno che i due domini non condividano gli utenti. Gli URL o la risposta vengono manomessi da MINGW64?

+0

Sembra esserci una soluzione: vedere la mia risposta modificata. – VonC

+0

Ho aggiornato la risposta: sembra esserci una correzione ufficiale. – VonC

risposta

8

Aggiornamento Febbraio 2016

PR 19891 "Enable cross-platforms login to Registry" si suppone risolto il problema

utilizzare un URL Registro daemon-definito per il login finestra mobile.

Ciò consente a un client Windows che interagisce con un daemon Linux di utilizzare correttamente l'endpoint del Registro di sistema predefinito anziché quello specifico di Windows.

E 'in commit 19eaa71 (forse per finestra mobile 1.10?)


Questo è riportato sia in docker/docker issue 15612 e docker/docker issue 18019

Dopo alcune analisi del codice sorgente che ho rilevato che abbiamo diversi URL di registro per Windows e UNIX.

L'url di Windows viene da una recent PR 15417 con il commento:

// Currently it is a TEMPORARY link that allows Microsoft to continue 
// development of Docker Engine for Windows. 

Quindi è possibile che questo URL non lavoro (a meno che non si sia su un Windows Server 2016 recente)


Sembra che ci sia una soluzione in docker/hub-feedback issues 473, che coinvolge:

  • specificando il registro indice di default della finestra mobile io,

    docker login --username=myuser --password=mypassword --email=myemail https://index.docker.io/v1/ 
    WARNING: login credentials saved in C:\Users\myuser\.docker\config.json 
    Login Succeeded 
    
  • modificando il file config.json creato dal precedente passaggio, per aggiungere le stesse credenziali per index.docker.io per il registry-win:

config.json:

{ 
    "auths": { 
     "https://index.docker.io/v1/": { 
      "auth": "myhash", 
      "email": "myemail" 
     }, 
     "https://registry-win-tp3.docker.io/v1/": { 
      "auth": "myhash", 
      "email": "mydomain"   
     } 
    } 
} 

Dopo di che, un docker push index.docker.io/myuser/myrepo:latest funziona.

+0

Grazie mille per la risposta completa e soluzione! Ha funzionato alla grande per me! – Nejuf

Problemi correlati