2015-06-22 12 views
11

Jak mogę wstępnie sprawdzić moje poświadczenia dla polecenia docker login w skrypcie?automatyczne logowanie do systemu dokowania w skrypcie bash

Używam skrypt bash, który w zasadzie automatyzuje cały proces konfigurowania mój zwyczaj maszyn wirtualnych etc, ale kiedy trzeba, aby zalogować się do dokowanym w skrypcie wyciągnąć obrazów, pojawia się następujący błąd:

Username: FATA[0000] inappropriate ioctl for device


komenda używałem jest następujący:

(echo "xxx"; echo "yyy"; echo "zzz") | docker login docker.somesite.org 


jest to możliwe do osiągnięcia bez użycia i radzenia sobie na istniejącym .dockercfg plik i jak,
Wielkie dzięki.

+0

Będziesz musiał użyć oczekiwać/pexpect –

Odpowiedz

19

można przejść wszystkie argumenty dotyczące wiersza polecenia:

docker login --username=$DOCKER_USER --password=$DOCKER_PASS $DOCKER_HOST 

Jeśli nie określisz DOCKER_HOST, dostaniesz główną Docker repo. Jeśli pominiesz którykolwiek z argumentów, zostaniesz poproszony o podanie tego argumentu.

(dla wersji Döcker starszych, które 1,11, trzeba zdać --email flagę, ale jego zawartość nie są właściwie sprawdzone)

+0

Dziękuję bardzo, że pracował; D –

+3

Krótki zapis może być bardziej wygodne: 'doker logowanie -u $ DOCKER_USER -p $ DOCKER_PASS -m $ DOCKER_EMAIL $ DOCKER_HOST' – antonbormotov

+1

Jest to kwestia preferencji, ale kiedy piszę scenariusz, wolę długie opcje, ponieważ jest to samo-dokumentowanie i nie ma żadnej korzyści dla zwięzłości. (W przeciwieństwie do wiersza poleceń, w którym zapisuje moje palce i unika zawijania). –

2

Po zalogowaniu do swojego prywatnego rejestru, doker auto stworzyć plik $ HOME /. docker/config.json Plik zawierał informacje o poświadczeniach, więc można zapisać plik i skopiować go na dowolnym hoście, gdy użytkownik chce zalogować się do rejestru.

Zawartość pliku tak:

{ 
    "auths": { 
        "example.com": { 
            "auth": "xxxxxxxxxxxxxxxxxxxxxxx" 
        } 
      } 
} 

Add-on Jeśli chcesz się zalogować wielofunkcyjnego rejestru Döcker na jednym serwerze, wystarczy dodać kolejny auth info.like to:

{ 
    "auths": { 
        "example.com": { 
            "auth": "xxxxxxxxxxxxxxxxxxxxxxx" 
        }, 
        "example1.com":{ 
            "auth": "xxxxxxxxxxxxxxxxxxxxxxx" 
        } 
      } 
} 

teraz ty może naciskać i pobierać obrazy z example.com i example1.com.

Powiązane problemy