OS: Ubuntu 18.04 Server
Docker 18.3 CE
Jestem zalogowany na serwerze z laptopa z systemem Windows 10 przy użyciu sesji PuTTY SSH.
Nie mam Dockera na moim lokalnym laptopie z Windows, więc cała praca jest wykonywana na zdalnym serwerze.
Mogę wykonywać wszystkie polecenia Dockera na zdalnym serwerze przy użyciu sesji terminala.
Jednak kiedy próbuję zapisać mój obraz w centrum Docker, kiedy próbuję się zalogować, używając:
docker login
Otrzymuję następujący komunikat o błędzie:
error getting credentials - err: exit status 1, out: `GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.secrets was not provided by any .service files`
Nie otrzymałem żadnych komunikatów o błędach, kiedy tworzyłem swój obraz na zdalnym serwerze.
Nie widzę również folderu .docker w powiązanym katalogu domowym na serwerze zdalnym. Jakieś pomysły?
docker login
z kontenera LXD / LXC. Ten konkretny problem rozwiązałem, kopiując.docker/config.json
z mojego hosta do mojego$HOME/.docker/
katalogu w kontenerze LXD / LXC, który utworzyłem ręcznie. Obecnie próbuję rozwiązać inny problem, ale chciałem zapytać, czy próbowałeś już tego zrobić?Odpowiedzi:
Edycja 2019-04-07:
Ponieważ jest to obecnie wybrana odpowiedź, myślę, że najpierw należy wypróbować rozwiązanie @Anish Varghese poniżej, ponieważ wydaje się ono najłatwiejsze. Musisz tylko zainstalować pakiet gnupg2 i przekazać pakiety:
Jeśli to nie zadziała, możesz wypróbować moje oryginalne rozwiązanie tutaj:
Miałem ten sam problem. Odpowiedź bak2trak działała, ale zapisała dane uwierzytelniające w postaci zwykłego tekstu. Oto rozwiązanie, jeśli chcesz je przechowywać w magazynie haseł.
1) Pobierz docker-credential-pass z https://github.com/docker/docker-credential-helpers/releases
2)
tar -xvf docker-credential-pass.tar.gz
3)
chmod u+x docker-credential-pass
4)
mv docker-credential-pass /usr/bin
5) Będziesz musiał skonfigurować docker-credential-pass (poniższe kroki są oparte na https://github.com/docker/docker-credential-helpers/issues/102#issuecomment-388634452 )
5.1) zainstaluj gpg i pass (
apt-get install gpg pass
)5.2)
gpg --generate-key
wprowadź swoje dane. Powinieneś zobaczyć coś takiego:Skopiuj linię 123 ...
5.3)
pass init 1234567890ABCDEF1234567890ABCDEF12345678
(wklej)5.4)
pass insert docker-credential-helpers/docker-pass-initialized-check
i ustaw następne hasło „pass is initialized” (bez cudzysłowów).5.5)
pass show docker-credential-helpers/docker-pass-initialized-check
. Powinieneś zobaczyć, że pass jest zainicjowany.5.6)
docker-credential-pass list
6) utwórz plik ~ / .docker / config.json z:
7) Logowanie do dockera powinno teraz działać
Uwaga: jeśli w przyszłości pojawi się komunikat o błędzie „magazyn przepustek jest niezainicjowany”, uruchom poniższe polecenie (spowoduje to ponowne załadowanie magazynu przepustek w pamięci):
Zapyta o hasło i zainicjuje magazyn przepustek.
Jest to oparte na tej dyskusji: https://github.com/moby/moby/issues/25169#issuecomment-431129898
źródło
Zainstalowanie następujących pakietów w systemie Ubuntu rozwiązało mój problem
źródło
sudo apt install pass
, reszta przyszła jako jej zależnoścignupg2 pass
rozwiązać problem?Napotkałem ten sam problem w Ubuntu 18.08 i to w końcu zadziałało ... jako tymczasowe rozwiązanie.
Utworzyłem ten folder,
home/.docker/
ponieważ niektóre rozwiązania sugerowały mi utworzenie plikuconfig.json
i zapisanie w nim domyślnych poświadczeń, tjconfig.json
.Następnie zmieniono nazwę usługi docker-credential-secretservice na coś innego, aby nie pobierał tego pliku.
sudo mv / usr / bin / docker-credential-secretservice / usr / bin / docker-credential-secretservice_x
i zadziałało!
źródło
org.freedesktop.secrets
. Nie znaleziono go w przypadku ubuntu 18 (niektóre problemy). Po zmianie nazwy (docker-credential-secretservice) na coś innego, a następnie wraca do samodzielnego tworzenia pliku konfiguracyjnego.Możesz zajrzeć do folderu home / .docker, jeden plik config.json zostałby utworzony.docker-credential-secretservice
z GH, utworzyłem~/.docker/config.json
z zawartością jak powyżej, a następnie spróbowałem się zalogować. Wystąpił błąd. Następnie usunięto.docker
folderconfig.json
i/usr/bin/docker-credential-secretservice
plik wykonywalny, a następnie uruchomionodocker login
ponownie z sukcesemdocker-compose
a następnie uruchomiłemsudo mv /usr/bin/docker-credential-secretservice /usr/bin/docker-credential-secretservice_x
zmianę nazwy, zadziałało. Czy ktoś wie, do czegodocker-credential-secretservice
służy?To też może pomóc, przynajmniej tak było w Ubuntu 20.04:
https://hackernoon.com/getting-rid-of-docker-plain-text-credentials-88309e07640d https://github.com/docker/docker-credential-helpers/releases
źródło
Jeśli apt install gnupg2 pass nie działa, możesz również zainstalować pakiet golang-docker-credential-helpers
źródło
Mnie
docker push
zawiodło... więc chciałem,
docker login
ale po wprowadzeniu poświadczeń otrzymałem następujące informacje:Na szczęście miałem do dyspozycji inną maszynę, na której mogłem zalogować się bez żadnych zmian w systemie. Skopiowałem zawartość
~/.docker/config.json
...... do drugiej maszyny i
docker push
zadziałało.źródło
Dla mnie najprostszym rozwiązaniem było utworzenie pliku config.json w katalogu .docker wewnątrz katalogu domowego użytkownika:
/home/.docker/config.json
Następnie skopiowałem zawartość tego pliku z serwera, z którego mogłem zalogować się do docker hub.
Jest to łatwe obejście, ponieważ nie wymaga instalowania ani aktualizowania żadnego pakietu, którego nie możemy łatwo zrobić na serwerach produkcyjnych.
źródło
Cóż, już przeczytałeś rozwiązanie, ale faktem jest, że gnupg2 nie jest teraz domyślnie instalowany w Ubuntu 18+, To jest powód, dla którego jakiś czas później
apt upgrade
rzeczy zachowują się trochę inaczej.źródło
Po odpowiedzi miałem kilka problemów.
Na szczęście naprawa jest prosta i wystarczy zainstalować pakiet
rng-tools
: https://stackoverflow.com/a/32941065pass init <key>
(krok 5.3)gpg: decryption failed: No secret key
pojawił się błąd .W rzeczywistości ten problem jest spowodowany ograniczeniem tajnego klucza do uprawnień roota.
Zmieniłem własność
.gnupg .password-store
folderów w katalogu domowym mojego użytkownika.Następnie ponownie załaduj dirmngr, aby uniknąć ostrzeżenia o „niebezpiecznej własności”:
gpgconf --kill dirmngr
Jeśli nie chcesz robić wszystkiego, możesz uruchomić wszystkie polecenia odpowiedzi jako root / sudo.
źródło
utworzenie następującego rozwiązania rozwiązało to dla mnie:
źródło
Proste rozwiązanie: po prostu usuń
"credsStore": "secretservice"
z ~ / .docker / config.jsonźródło
Zainstaluj następujące pakiety w systemie Ubuntu
To działa dla mnie.
źródło