Docker 계정에 로그인 할 수 없습니다.


120
OS: Ubuntu 18.04 Server
Docker 18.3 CE

PuTTY SSH 세션을 사용하여 Windows 10 랩톱에서 서버에 로그인했습니다.

로컬 Windows 랩톱에 Docker가 없으므로 모든 작업이 원격 서버에서 수행됩니다.

터미널 세션을 사용하여 원격 서버에서 모든 Docker 명령을 실행할 수 있습니다.

그러나 Docker 허브에 이미지를 저장하려고 할 때 로그인을 시도 할 때 다음을 사용합니다.

docker login

다음과 같은 오류 메시지가 나타납니다.

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`

원격 서버에서 내 이미지를 만들 때 오류 메시지가 나타나지 않았습니다.

또한 원격 서버의 관련 홈 디렉토리에 .docker 폴더가 표시되지 않습니다. 어떤 아이디어?


docker loginLXD / LXC 컨테이너 내 에서 실행하는 동안 오늘 비슷한 문제가 발생했습니다 . .docker/config.json호스트에서 $HOME/.docker/수동으로 만든 LXD / LXC 컨테이너 내의 디렉터리 로 복사 하여 해결 한 특정 문제 입니다. 현재 다른 문제를 해결하려고 노력하고 있지만 아직 시도해 본 적이 있는지 묻고 싶습니까?
code_dredd

아니요, 저는 Windows를 포기했습니다. 내일 새 랩톱을 구입하여 Ubuntu 18을 듀얼 부팅으로 설치할 예정입니다.
EastsideDev

여기 github.com/docker/cli/issues/1136에 대한 문제를 열었습니다 . 이에 대한 해결책을 찾으면 여기에 게시하겠습니다.
thishandp7

답변:


206

2019-04-07 수정 :

이것이 현재 선택된 답변이므로 사람들이 가장 쉬운 것 같으므로 먼저 아래 @Anish Varghese 솔루션을 시도해야한다고 생각합니다. gnupg2를 설치하고 패키지를 전달하기 만하면됩니다.

sudo apt install gnupg2 패스

작동하지 않으면 여기에서 원래 솔루션을 시도해 볼 수 있습니다.

나는 같은 문제가 있었다. bak2trak 대답은 작동했지만 자격 증명을 일반 텍스트로 저장했습니다. 암호 저장소에 보관하려는 경우 솔루션이 있습니다.

1) https://github.com/docker/docker-credential-helpers/releases 에서 docker-credential-pass 다운로드

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

삼) chmod u+x docker-credential-pass

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

5) docker-credential-pass를 설정해야합니다 (다음 단계는 https://github.com/docker/docker-credential-helpers/issues/102#issuecomment-388634452 기반 ).

5.1) gpg를 설치하고 통과 ( apt-get install gpg pass)

5.2) gpg --generate-key, 귀하의 정보를 입력하십시오. 다음과 같은 내용이 표시되어야합니다.

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

123 ... 행 복사

5.3) pass init 1234567890ABCDEF1234567890ABCDEF12345678(붙여 넣기)

5.4) pass insert docker-credential-helpers/docker-pass-initialized-check다음 비밀번호 "pass is initialized"(따옴표 제외)를 설정합니다.

5.5) pass show docker-credential-helpers/docker-pass-initialized-check. 패스가 초기화 된 것을 볼 수 있습니다.

5.6) docker-credential-pass list

6) 다음을 사용하여 ~ / .docker / config.json을 만듭니다.

{
"credsStore": "pass"
}

7) 이제 도커 로그인이 작동합니다.

참고 : 나중에 실행할 때 "pass store is uninitialized"오류가 발생하면 아래 명령을 실행합니다 (메모리에 패스 저장소를 다시로드합니다).

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

비밀번호를 묻고 패스 스토어를 초기화합니다.

이것은이 토론을 기반으로합니다 : https://github.com/moby/moby/issues/25169#issuecomment-431129898


나를 위해 일하지 않았다. 도커 로그인을 시도 할 때 "자격 증명을 얻는 동안 오류가 발생했습니다.-오류 : 종료 상태 1, 출력 :`패스 저장소가 초기화되지
않았습니다.

패스를 제거하고 .password-store 폴더를 삭제 한 후 다시 시작했습니다. 이제 더 좋아 보인다. 감사.
GlacialSpoon

2
@ Jean-Phillipe Jodoin, 감사합니다. 주기적으로 호출해야하는 것 같습니다. 그렇지 않으면 로그인 호출이 자격 증명을 찾지 못합니다. 나는 이것이 gpg 캐시 만료와 관련이있을 수 있다는 것을 읽었으며 "pass show"가 그것을 깨운다. 서버가 재부팅되면 일이 작동하기 전에 "패스 삽입"단계로 돌아 가야합니다. 별로 편리하지는 않지만 계속 진행할 수 있습니다.
GlacialSpoon 2018 년

1
아래 Anish Varghese의 답변을 확인하십시오. 가장 쉽고 깨끗한 솔루션 인 것 같습니다.
Aurelien

1
@JoePhillips : 동의합니다. 그의 솔루션을 인용과 통합했습니다.
Jean-Philippe Jodoin

214

우분투에 다음 패키지를 설치하면 문제가 해결되었습니다.

sudo apt install gnupg2 pass

1
나를 위해 일을하지 않았다뿐만 아니라 설치 GPG 일했다 "gnupg2 통과 GPG를 적절 설치 sudo를"
요 르그 베이어에게

6
우분투 18.04에서도 나를 위해 일했습니다. 나는 단지를 발행 sudo apt install pass했고, 나머지는 의존성으로왔다
Álex

4
Unbuntu 18.04에서 나를 위해 일했습니다.
Gill Bates 19

5
문제의 원인은 무엇입니까? 그리고 왜 gnupg2 pass문제를 해결할 것인가?
Neo

1
우분투 19.04에서도 저를 위해 일했습니다
Ammad Khalid

41

나는 우분투 18.08에서 같은 문제에 직면했고 이것은 마침내 나를 위해 일시적인 해결책으로 일했습니다.

home/.docker/일부 솔루션이 파일을 만들고 config.json기본 자격 증명 을 작성하도록 제안 했기 때문에이 폴더 를 만들었습니다.

{
    "credsStore": "pass"
}
  • 이 파일을 삭제했습니다 config.json.
  • 그런 다음이 파일을 선택하지 않도록 docker-credential-secretservice의 이름을 다른 것으로 변경했습니다.

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

그리고 작동했습니다!


2
@Renrhaf 첫 번째 도커 는 기본적으로 OS-X의 gnome 키 체인 및 osx-keychain에서 검색하는 "pass"를 찾습니다. 찾을 수 없으면 org.freedesktop.secrets. 우분투 18에서는 찾을 수 없습니다 (일부 문제). (docker-credential-secretservice) 이름을 다른 것으로 바꾼 후 구성 파일을 스스로 생성합니다. home / .docker 폴더에서 하나의 config.json 파일이 생성되었을 수 있습니다.
bak2trak

1
나는 방금이 문제를 만났고이 방법을 통해 해결했습니다. docker-credential-secretserviceGH에서 설치 ~/.docker/config.json하고 위의 내용으로 만든 다음 로그인을 시도했습니다. 오류가 발생했습니다. 그런 다음 삭제 된 .docker폴더 config.json/usr/bin/docker-credential-secretservice실행 파일을 다음 실행 docker login성공을 다시
앤디

1
같은 문제가있는 사람에게 : config.json삭제하는 것을 잊지 마십시오 . 나는 이것을 거의 포기했지만 config.json을 삭제 한 후 마지막 순간에 작동했습니다.
sr9yar

2
나를 위해, 나는 제거 docker-compose하고 sudo mv /usr/bin/docker-credential-secretservice /usr/bin/docker-credential-secretservice_x이름 바꾸기 를 실행 했습니다. 누구에게 사용되는지 알고 docker-credential-secretservice있습니까?
user1032613

1
이 솔루션은 나를 위해 일했지만 64 기반으로 인코딩 된 자격 증명을 저장합니다. 패스를 사용하는 솔루션 아래에 게시했습니다. stackoverflow.com/questions/50151833/…
Jean-Philippe Jodoin

4

apt install gnupg2 pass가 작동하지 않으면 golang-docker-credential-helpers 패키지를 설치할 수도 있습니다.


4

이것은 적어도 우분투 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


3

나를 위해 docker push실패했습니다

denied: requested access to the resource is denied

... 그래서 원했지만 docker login자격 증명을 입력 한 후 다음을 얻었습니다.

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

다행히도 시스템을 변경하지 않고 로그인 할 수있는 다른 시스템이 있습니다. ~/.docker/config.json... 의 내용을 복사했습니다 .

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

... 다른 기계로 docker push작업했습니다.


2

나에게 가장 간단한 해결책은 사용자 홈 디렉토리 내의 .docker 디렉토리 아래에 config.json 파일을 만드는 것이 었습니다.

/home/.docker/config.json

그런 다음 도커 허브에 로그인 할 수있는 서버에서이 파일의 내용을 복사했습니다.

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

}

프로덕션 서버에서 쉽게 수행 할 수없는 패키지를 설치하거나 업데이트 할 필요가 없기 때문에 쉬운 해결 방법입니다.


슬프게도 이것이 저에게 효과가 있었던 유일한 해결 방법입니다 ... 적어도 계정의 암호 대신 액세스 토큰을 사용할 수 있습니다.
George Aristy

"~ / home / .docker / config.json"경로가 너무 잘못된 것 같습니다. 아마도 "~ / .docker / config.json"을 의미했을 것입니다
BlakBat

그것을 밖으로 poinitng 주셔서 감사합니다, 경로를 upadated.
Mr Kashyap

1

글쎄 당신은 이미 해결책을 읽었지만 사실은 gnupg2가 이제 Ubuntu 18+에 기본적으로 설치되지 않는다는 것입니다. 그것이 나중에 언젠가 apt upgrade는 상황이 조금 다르게 작동하는 이유 입니다.


0

대답에 따라 몇 가지 문제가있었습니다.

  1. 키 생성이 엔트로피에서 멈췄습니다 (단계 5.2).

다행히도 수정은 쉬우 며 https://stackoverflow.com/a/32941065 패키지 만 설치하면됩니다 rng-tools.

  1. pass init <key>(단계 5.3) 오류가 gpg: decryption failed: No secret key나타났다.

사실이 문제는 루트 권한으로 제한되는 비밀 키 때문입니다.

.gnupg .password-store사용자의 homedir 에있는 폴더 의 소유권을 변경했습니다 .

그런 다음 "안전하지 않은 소유권"경고를 피하기 위해 dirmngr을 다시로드했습니다.

gpgconf --kill dirmngr

모든 작업을 수행하지 않으려면 응답의 모든 명령을 root / sudo로 실행할 수 있습니다.


0

다음을 작성하면 해결되었습니다.

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

0

간단한 솔루션 : "credsStore": "secretservice"~ / .docker / config.json에서 제거하십시오.


-3

우분투에 다음 패키지를 설치하십시오.

sudo apt install gnupg2 pass

이것은 나를 위해 일했습니다.


1
이것은 동일하거나 더 나은 내용을 가진 이전 답변에 대한 추가 사항을 제공하지 않습니다.
Karl Richter
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.