Docker hesabına giriş yapılamıyor


121
OS: Ubuntu 18.04 Server
Docker 18.3 CE

PuTTY SSH oturumu kullanarak Windows 10 dizüstü bilgisayarımdan sunucuda oturum açtım.

Yerel Windows dizüstü bilgisayarımda Docker'ım yok, bu nedenle tüm iş uzak sunucuda yapılıyor.

Terminal oturumunu kullanarak uzak sunucuda tüm Docker komutlarını çalıştırabilirim.

Ancak, imajımı Docker hub'a kaydetmeye çalıştığımda, oturum açmaya çalıştığımda, şunu kullanarak:

docker login

Aşağıdaki hata mesajını alıyorum:

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`

Görüntümü uzak sunucuda oluşturduğumda herhangi bir hata mesajı almadım.

Ayrıca uzak sunucudaki ilgili ana dizinde bir .docker klasörü görmüyorum. Herhangi bir fikir?


Bugün docker loginbir LXD / LXC konteynırından çalıştırmaya çalışırken benzer bir sorunla karşılaştım . El ile oluşturduğum LXD / LXC kapsayıcısındaki dizinime .docker/config.jsonana bilgisayarımdan kopyalayarak çözdüğüm belirli bir sorun $HOME/.docker/. Şu anda başka bir sorunu çözmeye çalışıyorum, ancak bunu yapmaya çalışıp çalışmadığınızı sormak istedim.
code_dredd

Hayır, Windows'tan bir şekilde vazgeçtim. Yarın, Ubuntu 18'i çift önyükleme olarak kuracağım yeni bir dizüstü bilgisayar alıyorum.
EastsideDev

Burada github.com/docker/cli/issues/1136 için bir sorun açtım . Bunun için bir çözüm bulurlarsa, buraya göndereceğim.
thishandp7

Yanıtlar:


206

2019-04-07'yi düzenleyin:

Şu anda seçilen cevap bu olduğu için, en kolay gibi göründüğü için insanlar önce aşağıdaki @Anish Varghese çözümünü denemeliler. Yalnızca gnupg2'yi kurmanız ve paketleri aktarmanız gerekir:

sudo apt install gnupg2 geçişi

Çalışmazsa, orijinal çözümümü burada deneyebilirsiniz:

Ben de aynı sorunu yaşadım. bak2trak yanıtı işe yaradı, ancak kimlik bilgilerini açık metin olarak kaydetti. Bunları bir şifre deposunda saklamak istiyorsanız çözüm burada.

1) docker-credential-pass'i https://github.com/docker/docker-credential-helpers/releases adresinden indirin

2) tar -xvf docker-credential-pass.tar.gz

3) chmod u+x docker-credential-pass

4) mv docker-credential-pass /usr/bin

5) docker-credential-pass'ı kurmanız gerekecek (aşağıdaki adımlar https://github.com/docker/docker-credential-helpers/issues/102#issuecomment-388634452'ye dayanmaktadır )

5.1) gpg'yi kurun ve geçin ( apt-get install gpg pass)

5.2) gpg --generate-keybilgilerinizi girin. Bunun gibi bir şey görmelisiniz:

pub   rsa3072 2018-10-07 [SC] [expires: 2020-10-06]
      1234567890ABCDEF1234567890ABCDEF12345678

123 ... satırını kopyalayın

5.3) pass init 1234567890ABCDEF1234567890ABCDEF12345678(yapıştır)

5.4) pass insert docker-credential-helpers/docker-pass-initialized-checkve bir sonraki şifreyi "geçiş başlatılır" (tırnak işaretleri olmadan) ayarlayın.

5.5) pass show docker-credential-helpers/docker-pass-initialized-check. Geçişin başlatıldığını görmelisiniz.

5.6) docker-credential-pass list

6) aşağıdakilerle bir ~ / .docker / config.json oluşturun:

{
"credsStore": "pass"
}

7) docker oturumu şimdi çalışmalı

Not: Sonraki çalıştırmada "geçiş deposu başlatılmadı" hatasını alırsanız, aşağıdaki komutu çalıştırın (bellekteki geçiş deposunu yeniden yükleyecektir):

pass show docker-credential-helpers/docker-pass-initialized-check

Şifrenizi soracak ve geçiş deposunu başlatacaktır.

Bu, bu tartışmaya dayanmaktadır: https://github.com/moby/moby/issues/25169#issuecomment-431129898


Benim için çalışmadı.
Docker oturum açmayı

Password-store klasörünü kaldırıp sildikten sonra tekrar başladım. Şimdi daha iyi görünüyor. Teşekkürler.
GlacialSpoon

2
@ Jean-Phillipe Jodoin, teşekkürler. Görünüşe göre bunu periyodik olarak aramam gerekiyor, aksi takdirde oturum açma araması kimlik bilgilerini bulamıyor. Bunun gpg önbelleğinin süresinin dolmasıyla ilgili olabileceğini okudum ve "geçiş şovu" onu uyandırıyor. Sunucu yeniden başlatıldığında, işler yürümeden önce "geçiş ekleme" adımına geri dönmem gerekiyor. Çok uygun değil ama devam etmeme izin veriyor.
GlacialSpoon

1
Aşağıdaki Anish Varghese'nin cevabını kontrol edin, en kolay ve en temiz çözüm gibi görünüyor.
Aurelien

1
@JoePhillips: Sizinle anlaştık. Çözümünü alıntı ile bütünleştirdi.
Jean-Philippe Jodoin

214

Aşağıdaki Paketleri ubuntu'ya yüklemek sorunumu çözdü

sudo apt install gnupg2 pass

1
benim için çalışmadı, ancak gpg kurulumu da çalıştı: "sudo apt install gnupg2 pass gpg"
Jörg Beyer

6
Benim için ubuntu 18.04'te de çalıştı. Sadece yayınladım sudo apt install pass, gerisi bağımlılıkları olarak geldi
Álex

4
Unbuntu 18.04'te benim için çalıştı.
Gill Bates

5
Sorunun kökeni nedir? ve neden gnupg2 passsorunu nasıl çözecek?
Neo

1
Benim için ubuntu
19.04'te

41

Aynı sorunla ubuntu 18.08'de karşılaştım ve bu nihayet benim için çalıştı .. geçici bir çözüm olarak.

home/.docker/Bazı çözümler bana bir dosya oluşturmamı config.jsonve varsayılan kimlik bilgilerini yazmamı önerdiği için bu klasörü oluşturdum.

{
    "credsStore": "pass"
}
  • Bu dosyayı sildim config.json.
  • Daha sonra docker-credential-secretservice, bu dosyayı almaması için başka bir şey olarak yeniden adlandırıldı.

    sudo mv / usr / bin / docker-credential-secretservice / usr / bin / docker-credential-secretservice_x

ve işe yaradı!


2
@Renrhaf First docker , varsayılan olarak OS-X'te gnome anahtar zincirinde ve osx anahtar zincirinde arama yaptığı "pass" kelimesini arar. Bulunmazsa, arar org.freedesktop.secrets. Ubuntu 18 için bulunamadı (bazı sorunlar). Bunu (docker-credential-secretservice) başka bir şeye yeniden adlandırdıktan sonra, kendi kendine yapılandırma dosyası oluşturmak için geri döner, home / .docker klasörüne bakabilirsiniz, bir config.json dosyası oluşturulur.
bak2trak

1
Bu sorunla yeni karşılaştım ve bu yöntemle çözdüm - tür. docker-credential-secretserviceGH'den yükledim , ~/.docker/config.jsonyukarıdaki gibi bir içerik oluşturdum ve sonra giriş yapmayı denedim. Bir hata aldım . Ardından .dockerklasörü config.jsonve /usr/bin/docker-credential-secretserviceyürütülebilir dosyayı silip docker loginbaşarıyla tekrar çalıştırdı
Andy

1
Aynı sorunu yaşayanlar için: config.json'u silmeyi unutmayın . Neredeyse bundan vazgeçiyordum ama config.json'u sildikten sonra son anda işe yaradı.
sr9yar

2
Benim için kaldırdım docker-composeve sudo mv /usr/bin/docker-credential-secretservice /usr/bin/docker-credential-secretservice_xyeniden adınızı çalıştırdım , işe yaradı. Ne docker-credential-secretserviceiçin kullanıldığını bilen var mı ?
user1032613

1
Bu çözüm benim için çalıştı, ancak temel 64 kodlu kimlik bilgilerini kaydediyor. Aşağıda pass kullanan bir çözüm yayınladım. stackoverflow.com/questions/50151833/…
Jean-Philippe Jodoin

4

Apt install gnupg2 pass işinize yaramazsa, golang-docker-credential-helpers paketini de kurabilirsiniz


4

Bu da yardımcı olabilir, en azından Ubuntu 20.04'te yaptı:

wget https://github.com/docker/docker-credential-helpers/releases/download/v0.6.3/docker-credential-secretservice-v0.6.3-amd64.tar.gz && tar -xf docker-credential-secretservice-v0.6.3-amd64.tar.gz && chmod +x docker-credential-secretservice && mv docker-credential-secretservice /usr/local/bin/

https://hackernoon.com/getting-rid-of-docker-plain-text-credentials-88309e07640d   https://github.com/docker/docker-credential-helpers/releases


3

Benim için docker pushbaşarısız oldu

denied: requested access to the resource is denied

... bu yüzden istedim docker loginama kimlik bilgilerini girdikten sonra aşağıdakileri aldım:

Remote error from secret service:
  org.freedesktop.DBus.Error.UnknownMethod:
  No such interface 'org.freedesktop.Secret.Collection' on object at path
  /org/freedesktop/secrets/collection/login

Error saving credentials:
  error storing credentials - err: exit status 1, out:
  No such interface 'org.freedesktop.Secret.Collection' on object at path
  /org/freedesktop/secrets/collection/login

Neyse ki, sistemde herhangi bir değişiklik yapmadan oturum açabildiğim başka bir makinem vardı. İçeriğini kopyaladım ~/.docker/config.json...

{
        "auths": {
                "https://index.docker.io/v1/": {
                        "auth": "<some-hash-value>"
                }
        },
        "HttpHeaders": {
                "User-Agent": "Docker-Client/18.09.2 (linux)"
        }
}

... diğer makineye ve docker pushçalıştı.


2

Benim için en basit çözüm, kullanıcı ana dizini içinde .docker dizini altında config.json dosyası oluşturmaktı:

/home/.docker/config.json

Daha sonra bu dosyanın içeriğini docker hub'a giriş yapabildiğim sunucudan kopyaladım.

{
        "auths": {
                "https://index.docker.io/v1/": {
                        "auth": "SOMEVALUE"
                }
        },
        "HttpHeaders": {
                "User-Agent": "Docker-Client/18.06.1-ce (linux)"
        }

}

Bu kolay bir çözüm çünkü üretim sunucularında kolayca yapamayacağımız herhangi bir paketi kurmanızı veya güncellemenizi gerektirmez.


Ne yazık ki, bu benim için işe yarayan tek geçici çözüm ... en azından hesabınızın pwd'si yerine bir erişim belirteci kullanmak mümkün.
George Aristy

"~ / Home / .docker / config.json" yolu çok yanlış görünüyor. Muhtemelen "~ / .docker / config.json" demek istediniz
BlakBat

Onu dışarı attığın için teşekkürler, yolu yeniledi.
Mr Kashyap

1

Zaten çözümü okudunuz ama gerçek şu ki, gnupg2 artık varsayılan olarak Ubuntu 18+ 'de kurulu değil, Bu bir süre sonra apt upgradeişler biraz farklı davranıyor.


0

Cevabı takiben birkaç sorun yaşadım.

  1. Anahtar üretimi entropide takılı kaldı (adım 5.2).

Neyse ki, düzeltme kolaydır ve yalnızca paketi yüklemeniz gerekir rng-tools: https://stackoverflow.com/a/32941065

  1. Açık pass init <key>(adım 5.3) hata gpg: decryption failed: No secret keyortaya çıktı.

Aslında bu sorun, gizli anahtarın kök ayrıcalıklarıyla sınırlı olmasından kaynaklanmaktadır.

Mülkiyetini değiştirdim .gnupg .password-storeKullanıcımın ana sayfasındaki klasörlerin .

Ardından, "güvenli olmayan sahiplik" uyarısını önlemek için dirmngr'yi yeniden yükledi:

gpgconf --kill dirmngr

Bunların hepsini yapmak istemiyorsanız, cevabın tüm komutlarını root / sudo olarak çalıştırabilirsiniz.


0

aşağıdakileri oluşturmak benim için çözdü:

AWS_CONFIG=$AWS_DIR/config
AWS_CREDENTIALS=$AWS_DIR/credentials
mkdir -p $AWS_DIR

0

Basit çözüm: "credsStore": "secretservice"~ / .docker / config.json'dan kaldırın


-3

Aşağıdaki Paketleri ubuntu'ya yükleyin

sudo apt install gnupg2 pass

Bu benim için çalıştı.


1
Bu, aynı veya daha iyi içeriğe sahip önceki cevaplara herhangi bir ekleme sağlamaz.
Karl Richter
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.