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

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 폴더가 표시되지 않습니다. 어떤 아이디어?



답변

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


답변

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

sudo apt install gnupg2 pass


답변

나는 우분투 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

그리고 작동했습니다!


답변

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


답변

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


답변

나를 위해 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작업했습니다.


답변

나에게 가장 간단한 해결책은 사용자 홈 디렉토리 내의 .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)"
        }

}

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