2015-11-17 8 views
7

Zainstalowałem Docker Toolbox w Windows 8.1 i korzystam z samouczka instalacji. Kiedy dochodziłem do kroku, w którym jesteś create and push your own imag e, otrzymałem ten błąd, gdy próbowałem uruchomić docker login ....Dlaczego "logowanie do dokowarki" kończy się niepowodzeniem w Docker Quickstart Terminal, ale działa z poziomu domyślnego komputera?

### 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 

Próbując rozwiązać ten problem, próbowałem działa docker login ... od wewnątrz domyślnie Docker VM. I tam to działa!

### 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/" 

Zauważyłem, że używają dwóch różnych adresów URL i że pierwszy napotka błąd podczas parsowania. Dane uwierzytelniające są oczywiście poprawne, ponieważ działają z poziomu maszyny wirtualnej, chyba że te dwie domeny nie współdzielą użytkowników. Czy adresy URL lub odpowiedź są mangled przez MINGW64?

+0

Wydaje się, że istnieje obejście: zobacz moją zredagowaną odpowiedź. – VonC

+0

Zaktualizowałem odpowiedź: wydaje się, że oficjalna poprawka. – VonC

Odpowiedz

8

Aktualizacja luty 2016

PR 19891 "Enable cross-platforms login to Registry" ma stałej emisji

Użyj demona zdefiniowane rejestru URL Döcker logowania.

Pozwala to klientowi Windows na interakcję z demonem Linuxa w celu poprawnego używania domyślnego punktu końcowego rejestru zamiast specyficznego dla systemu Windows.

Jest w commit 19eaa71 (może dla docker 1.10?)


To jest zgłaszane zarówno w docker/docker issue 15612 i docker/docker issue 18019

Po pewnym analizy kodu źródłowego I Wykryliśmy, że mamy różne adresy URL rejestru dla Windows i UNIX.

Adres URL Okna pochodzi z recent PR 15417 z komentarzem:

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

więc możliwe jest to adres URL nie będzie działa (chyba że jesteś na bardzo niedawnym Windows Server 2016)


Wydaje się, że obejście w docker/hub-feedback issues 473, który obejmuje:

  • określając rejestr domyślny indeksu Döcker 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 
    
  • modyfikując plik config.json utworzonego przez poprzedni krok, w celu dodania tych samych poświadczeń do index.docker.io dla :

config.json:

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

Po tym, docker push index.docker.io/myuser/myrepo:latest działa.

+0

Dziękuję bardzo za dokładną odpowiedź i obejście problemu! Sprawdziło się doskonale dla mnie! – Nejuf

Powiązane problemy