OS: Ubuntu 18.04 Server
Docker 18.3 CE
Saya masuk ke server, dari laptop Windows 10 saya, menggunakan sesi PuTTY SSH.
Saya tidak memiliki Docker di laptop Windows lokal saya, jadi semua pekerjaan dilakukan di server jarak jauh.
Saya dapat menjalankan semua perintah Docker, di server jarak jauh, menggunakan sesi terminal.
Namun, ketika saya mencoba menyimpan image saya ke hub Docker, ketika saya mencoba masuk, menggunakan:
docker login
Saya mendapatkan pesan kesalahan berikut:
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`
Saya tidak mendapatkan pesan kesalahan apa pun, ketika saya membuat gambar saya di server jauh.
Saya juga tidak melihat folder .docker di direktori home terkait di server jarak jauh. Ada ide?
docker login
dari dalam wadah LXD / LXC. Yang khusus itu saya selesaikan dengan menyalin.docker/config.json
dari host saya ke$HOME/.docker/
direktori saya di dalam wadah LXD / LXC, yang saya buat secara manual. Saat ini saya mencoba mencari tahu masalah lain sekarang, tetapi ingin bertanya apakah Anda sudah mencoba melakukan ini?Jawaban:
Sunting 07-04-2019:
Karena ini adalah jawaban yang saat ini dipilih, saya pikir orang harus mencoba solusi @Anish Varghese di bawah ini terlebih dahulu karena tampaknya yang paling mudah. Anda hanya perlu menginstal gnupg2 dan paket pass:
Jika tidak berhasil, Anda dapat mencoba solusi asli saya di sini:
Saya memiliki masalah yang sama. jawaban bak2trak berfungsi, tetapi kredensial disimpan dalam teks yang jelas. Inilah solusinya jika Anda ingin menyimpannya di penyimpanan kata sandi.
1) Unduh docker-credential-pass dari 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) Anda perlu menyiapkan docker-credential-pass (langkah-langkah berikut didasarkan pada https://github.com/docker/docker-credential-helpers/issues/102#issuecomment-388634452 )
5.1) instal gpg dan pass (
apt-get install gpg pass
)5.2)
gpg --generate-key
, masukkan informasi Anda. Anda akan melihat sesuatu seperti ini:Salin baris 123 ...
5.3)
pass init 1234567890ABCDEF1234567890ABCDEF12345678
(tempel)5.4)
pass insert docker-credential-helpers/docker-pass-initialized-check
dan setel kata sandi berikutnya "pass diinisialisasi" (tanpa tanda kutip).5.5)
pass show docker-credential-helpers/docker-pass-initialized-check
. Anda akan melihat pass diinisialisasi.5.6)
docker-credential-pass list
6) buat ~ / .docker / config.json dengan:
7) Login buruh pelabuhan sekarang harus bekerja
Catatan: Jika Anda mendapatkan error "pass store is uninitialized" di masa mendatang, jalankan perintah di bawah ini (ini akan memuat ulang penyimpanan sandi di memori):
Ini akan menanyakan kata sandi Anda dan itu akan menginisialisasi penyimpanan pass.
Ini didasarkan pada diskusi ini: https://github.com/moby/moby/issues/25169#issuecomment-431129898
sumber
Instal Paket berikut di ubuntu memperbaiki masalah saya
sumber
sudo apt install pass
, sisanya datang sebagai ketergantungannyagnupg2 pass
mengatasi masalah tersebut?Saya menghadapi masalah yang sama di ubuntu 18.08 dan ini akhirnya berhasil untuk saya .. sebagai solusi sementara.
Saya telah membuat folder ini
home/.docker/
karena beberapa solusi menyarankan saya untuk membuat fileconfig.json
dan menulis kredensial default di dalamnya yaituconfig.json
.Kemudian ganti nama docker-credential-secretervice ke yang lain sehingga tidak mengambil file ini.
sudo mv / usr / bin / docker-credential-secretervice / usr / bin / docker-credential-secretervice_x
dan berhasil!
sumber
org.freedesktop.secrets
. Ini tidak ditemukan untuk ubuntu 18 (beberapa masalah). Setelah mengganti namanya (docker-credential-secretervice) menjadi sesuatu yang lain kemudian kembali untuk membuat file konfigurasi dengan sendirinya, Anda dapat melihat di folder home / .docker satu file config.json akan dibuat.docker-credential-secretservice
dari GH, membuat~/.docker/config.json
dengan konten seperti di atas kemudian mencoba masuk. Mendapat kesalahan. Kemudian menghapus.docker
folder,config.json
dan/usr/bin/docker-credential-secretservice
dapat dieksekusi dan kemudian berjalandocker login
kembali dengan suksesdocker-compose
dan kemudian menjalankansudo mv /usr/bin/docker-credential-secretservice /usr/bin/docker-credential-secretservice_x
penggantian nama Anda , itu berhasil. Adakah yang tahu untuk apadocker-credential-secretservice
digunakan?Jika apt install gnupg2 pass tidak berfungsi untuk Anda, Anda juga dapat menginstal paket golang-docker-credential-helpers
sumber
Ini juga dapat membantu, setidaknya di Ubuntu 20.04:
https://hackernoon.com/getting-rid-of-docker-plain-text-credentials-88309e07640d https://github.com/docker/docker-credential-helpers/releases
sumber
Bagi saya
docker push
gagal dengan... jadi saya ingin
docker login
tetapi mendapatkan yang berikut setelah memasukkan kredensial:Untungnya, saya memiliki mesin lain yang tersedia di mana saya dapat masuk tanpa ada perubahan pada sistem. Saya menyalin konten dari
~/.docker/config.json
...... ke mesin lain dan
docker push
bekerja.sumber
Bagi saya, solusi paling sederhana adalah membuat file config.json di bawah direktori .docker di dalam direktori home user:
/home/.docker/config.json
Kemudian saya menyalin konten file ini dari server tempat saya bisa login ke hub buruh pelabuhan.
Ini adalah solusi yang mudah, karena tidak mengharuskan Anda menginstal atau memperbarui paket apa pun yang tidak dapat kami lakukan dengan mudah di server produksi.
sumber
Nah, Anda sudah membaca solusinya tetapi faktanya gnupg2 sekarang tidak diinstal secara default di Ubuntu 18+, Itulah alasannya beberapa saat kemudian
apt upgrade
, hal-hal berperilaku sedikit berbeda.sumber
Setelah jawabannya, saya memiliki beberapa masalah.
Untungnya, perbaikannya mudah dan Anda hanya perlu menginstal paket
rng-tools
: https://stackoverflow.com/a/32941065pass init <key>
(langkah 5.3) kesalahangpg: decryption failed: No secret key
muncul.Faktanya masalah ini disebabkan oleh kunci rahasia yang dibatasi untuk hak akses root.
Saya mengubah kepemilikan
.gnupg .password-store
folder di homedir pengguna saya.Kemudian muat ulang dirmngr untuk menghindari peringatan "kepemilikan tidak aman":
gpgconf --kill dirmngr
Jika Anda tidak ingin melakukan semua itu, Anda dapat menjalankan semua perintah jawabannya sebagai root / sudo.
sumber
membuat yang berikut memecahkannya untuk saya:
sumber
Solusi sederhana: hapus saja
"credsStore": "secretservice"
dari ~ / .docker / config.jsonsumber
Instal Paket berikut di ubuntu
Ini berhasil untuk saya.
sumber