Không thể đăng nhập vào tài khoản Docker


109
OS: Ubuntu 18.04 Server
Docker 18.3 CE

Tôi đã đăng nhập vào máy chủ, từ máy tính xách tay Windows 10 của mình, bằng phiên PuTTY SSH.

Tôi không có Docker trên máy tính xách tay Windows cục bộ của mình, vì vậy tất cả công việc được thực hiện trên máy chủ từ xa.

Tôi có thể thực hiện tất cả các lệnh Docker, trên máy chủ từ xa, bằng cách sử dụng phiên đầu cuối.

Tuy nhiên, khi tôi cố gắng lưu hình ảnh của mình vào trung tâm Docker, khi tôi cố gắng đăng nhập, sử dụng:

docker login

Tôi nhận được thông báo lỗi sau:

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`

Tôi không nhận được bất kỳ thông báo lỗi nào khi tạo hình ảnh của mình trên máy chủ từ xa.

Tôi cũng không thấy thư mục .docker trong thư mục chính có liên quan trên máy chủ từ xa. Bất kỳ ý tưởng?


Tôi đã gặp phải một vấn đề tương tự ngày hôm nay khi cố gắng chạy docker logintừ bên trong vùng chứa LXD / LXC. Vấn đề cụ thể đó tôi đã giải quyết bằng cách sao chép .docker/config.jsontừ máy chủ của tôi qua $HOME/.docker/thư mục của tôi trong vùng chứa LXD / LXC, mà tôi đã tạo theo cách thủ công. Tôi hiện đang cố gắng tìm ra một vấn đề khác, nhưng muốn hỏi bạn đã thử làm điều này chưa?
code_dredd

Không, tôi đã từ bỏ Windows. Tôi sẽ nhận được một máy tính xách tay mới vào ngày mai, nơi tôi sẽ cài đặt Ubuntu 18 dưới dạng khởi động kép.
EastsideDev

Tôi đã gặp sự cố cho vấn đề này tại đây github.com/docker/cli/issues/1136 . Nếu họ tìm ra giải pháp cho điều này, tôi sẽ đăng nó ở đây.
thishandp7

Câu trả lời:


195

Chỉnh sửa 2019-04-07:

Vì đây là câu trả lời hiện được chọn, tôi nghĩ mọi người nên thử giải pháp @Anish Varghese bên dưới trước vì nó có vẻ là dễ nhất. Bạn chỉ cần cài đặt gói gnupg2 và vượt qua:

sudo apt install gnupg2 pass

Nếu nó không hoạt động, thì bạn có thể thử giải pháp ban đầu của tôi tại đây:

Tôi gặp vấn đề tương tự. Câu trả lời bak2trak đã hoạt động, nhưng nó lưu thông tin đăng nhập ở dạng văn bản rõ ràng. Đây là giải pháp nếu bạn muốn giữ chúng trong kho mật khẩu.

1) Tải xuống docker-credential-pass từ 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ạn sẽ cần thiết lập docker-credential-pass (các bước sau dựa trên https://github.com/docker/docker-credential-helpers/issues/102#issuecomment-388634452 )

5.1) cài đặt gpg và vượt qua (apt-get install gpg pass )

5.2) gpg --generate-key, nhập thông tin của bạn. Bạn sẽ thấy một cái gì đó như thế này:

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

Sao chép dòng 123 ...

5,3) pass init 1234567890ABCDEF1234567890ABCDEF12345678 (dán)

5,4) pass insert docker-credential-helpers/docker-pass-initialized-check và đặt mật khẩu tiếp theo "pass được khởi tạo" (không có dấu ngoặc kép).

5.5) pass show docker-credential-helpers/docker-pass-initialized-check . Bạn sẽ thấy vượt qua được khởi tạo.

5,6) docker-credential-pass list

6) tạo ~ / .docker / config.json với:

{
"credsStore": "pass"
}

7) đăng nhập docker bây giờ sẽ hoạt động

Lưu ý: Nếu bạn gặp lỗi "pass store is uninitialized" trong lần chạy sau này, hãy chạy lệnh dưới đây (nó sẽ tải lại pass store trong bộ nhớ):

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

Nó sẽ hỏi mật khẩu của bạn và nó sẽ khởi tạo pass store.

Điều này dựa trên cuộc thảo luận này: https://github.com/moby/moby/issues/25169#issuecomment-431129898


Không làm việc cho tôi. Tôi nhận được thông báo khi tôi cố gắng Docker đăng nhập: "lỗi nhận được thông tin - err: trạng thái thoát 1, ra:` qua cửa hàng chưa được định hình"
GlacialSpoon

Tôi bắt đầu lại sau khi gỡ cài đặt pass và xóa thư mục .password-store. Có vẻ tốt hơn bây giờ. Cảm ơn.
GlacialSpoon

1
@ Jean-Phillipe Jodoin, cảm ơn. Có vẻ như tôi phải gọi điều này định kỳ nếu không cuộc gọi đăng nhập không tìm thấy thông tin đăng nhập. Tôi đọc rằng đây có thể là điều gì đó liên quan đến bộ nhớ cache gpg hết hạn và "pass show" đánh thức nó. Khi máy chủ khởi động lại, tôi phải quay lại bước "chèn pass" trước khi mọi thứ hoạt động. Nó không thuận tiện lắm nhưng nó cho phép tôi tiếp tục.
GlacialSpoon

1
Kiểm tra câu trả lời của Anish Varghese dưới đây, nó có vẻ là giải pháp dễ dàng và sạch sẽ nhất.
Aurelien

1
@JoePhillips: Đồng ý với bạn. Tích hợp giải pháp của mình với trích dẫn.
Jean-Philippe Jodoin

200

Cài đặt các Gói sau trong ubuntu đã khắc phục sự cố của tôi

sudo apt install gnupg2 pass

không làm việc cho tôi, mà còn cài đặt gpg làm việc: "sudo apt cài đặt gnupg2 qua gpg"
Jörg Beyer

6
Cũng làm việc cho tôi trên ubuntu 18.04. Tôi chỉ phát hành sudo apt install pass, phần còn lại đến như là sự phụ thuộc của nó
Álex

4
Đã làm việc cho tôi trên Unbuntu 18.04.
Gill Bates

5
Gốc của vấn đề là gì? và tại sao gnupg2 passsẽ khắc phục sự cố như thế nào?
Skyfall

1
Cũng làm việc cho tôi tại ubuntu 19.04
Ammad Khalid

41

Tôi gặp phải vấn đề tương tự trong ubuntu 18.08 và điều này cuối cùng đã làm việc cho tôi .. như một giải pháp tạm thời.

Tôi đã tạo thư mục này home/.docker/vì một số giải pháp đề xuất tôi tạo tệp config.jsonvà ghi thông tin đăng nhập mặc định trong đó, tức là

{
    "credsStore": "pass"
}
  • Tôi đã xóa tệp này config.json.
  • Sau đó, đổi tên docker-credential-secretervice thành một thứ khác để nó không lấy tệp này.

    sudo mv / usr / bin / docker-credential-secretervice / usr / bin / docker-credential-secretervice_x

va no đa hoạt động!


2
@Renrhaf Đầu tiên Docker bởi vẻ ngoài mặc định cho "vượt qua", nơi nó tìm kiếm trong gnome keychain và OSX-móc chìa khóa trong OS-X. Nếu nó không được tìm thấy thì hãy tìm kiếm org.freedesktop.secrets. Nó không được tìm thấy cho ubuntu 18 (một số vấn đề). Sau khi đổi tên nó (docker-credential-secretervice) thành một cái gì đó khác thì nó sẽ quay trở lại để tự tạo tệp cấu hình, Bạn có thể tìm trong thư mục home / .docker một tệp config.json đã được tạo.
bak2trak

Tôi vừa gặp sự cố này và đã giải quyết nó thông qua phương pháp này - loại. Tôi đã cài đặt docker-credential-secretservicetừ GH, tạo một ~/.docker/config.jsonvới nội dung như trên, sau đó cố gắng đăng nhập. Đã xảy ra lỗi. Sau đó, xóa các .dockerthư mục, config.json/usr/bin/docker-credential-secretservicethực thi và sau đó chạy docker loginlại với thành công
Andy

1
Đối với bất kỳ ai gặp vấn đề tương tự: Đừng quên xóa config.json . Tôi gần như đã từ bỏ điều này, nhưng nó đã hoạt động trong giây phút cuối cùng, sau khi tôi xóa config.json.
sr9yar

2
Đối với tôi, tôi đã gỡ cài đặt docker-composevà sau đó chạy sudo mv /usr/bin/docker-credential-secretservice /usr/bin/docker-credential-secretservice_xđổi tên của bạn , nó hoạt động. Có ai biết những gì docker-credential-secretserviceđược sử dụng cho?
user1032613

1
Giải pháp này đã làm việc cho tôi, nhưng nó lưu thông tin đăng nhập cơ sở 64 được mã hóa. Tôi đã đăng bên dưới một giải pháp sử dụng pass. stackoverflow.com/questions/50151833/…
Jean-Philippe Jodoin,

4

Nếu thẻ apt install gnupg2 không hoạt động với bạn, bạn cũng có thể cài đặt gói golang-docker-credential-helpers


4

Điều này cũng có thể hữu ích, ít nhất là nó đã làm trong Ubuntu 20.04:

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


2

Đối với tôi docker pushđã thất bại với

denied: requested access to the resource is denied

... vì vậy tôi muốn docker loginnhưng nhận được những điều sau sau khi nhập thông tin đăng nhập:

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

May mắn thay, tôi có sẵn một máy khác mà tôi có thể đăng nhập mà không có bất kỳ thay đổi nào đối với hệ thống. Tôi đã sao chép nội dung của ~/.docker/config.json...

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

... sang máy khác và docker pushhoạt động.


1

Đối với tôi, giải pháp đơn giản nhất là tạo tệp config.json trong thư mục .docker bên trong thư mục chính của người dùng:

/home/.docker/config.json

Sau đó, tôi đã sao chép nội dung của tệp này từ máy chủ từ nơi tôi có thể đăng nhập vào trung tâm docker.

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

}

Đây là một giải pháp dễ dàng, vì nó không yêu cầu bạn cài đặt hoặc cập nhật bất kỳ gói nào mà chúng tôi không thể thực hiện dễ dàng trên máy chủ sản xuất.


Đáng buồn thay, đây là giải pháp duy nhất phù hợp với tôi ... ít nhất là có thể sử dụng mã thông báo truy cập thay vì mật khẩu tài khoản của bạn.
George Aristy

Đường dẫn "~ / home / .docker / config.json" có vẻ sai. Có thể ý bạn là "~ / .docker / config.json"
BlakBat

Cảm ơn vì đã phát nó ra, đã cập nhật đường dẫn.
Mr Kashyap

0

Vâng, bạn đã đọc giải pháp nhưng thực tế là gnupg2 hiện không được cài đặt theo mặc định trong Ubuntu 18+, Đó là lý do tại sao một thời gian sau apt upgrade, mọi thứ hoạt động hơi khác một chút.


0

Sau câu trả lời, tôi có một số vấn đề.

  1. Việc tạo khóa bị kẹt ở entropy (bước 5.2).

May mắn thay, việc khắc phục rất dễ dàng và bạn chỉ cần cài đặt gói rng-tools: https://stackoverflow.com/a/32941065

  1. Trên pass init <key>(bước 5.3), lỗi gpg: decryption failed: No secret keyxuất hiện.

Trên thực tế, vấn đề này là do khóa bí mật bị hạn chế đối với đặc quyền root.

Tôi đã thay đổi quyền sở hữu các .gnupg .password-storethư mục trong homedir của người dùng của mình.

Sau đó, tải lại dirmngr để tránh cảnh báo "quyền sở hữu không an toàn":

gpgconf --kill dirmngr

Nếu bạn không muốn làm tất cả những điều đó, bạn có thể chạy tất cả các lệnh của câu trả lời dưới dạng root / sudo.


0

tạo điều sau đây đã giải quyết nó cho tôi:

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

0

Giải pháp đơn giản: chỉ cần xóa "credsStore": "secretservice"khỏi ~ / .docker / config.json


-3

Cài đặt các Gói sau trong ubuntu

sudo apt install gnupg2 pass

Điều này được làm việc cho tôi.


1
Điều này không cung cấp bất kỳ bổ sung nào cho các câu trả lời trước đó có cùng nội dung hoặc tốt hơn.
Karl Richter
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.