[docker] Docker가 이미 Docker 레지스트리 서버에 로그인되어 있는지 확인하는 방법

cmd : docker login을 사용하여 cmd 줄의 docker 레지스트리에 이미 로그인했는지 확실하지 않습니다. 푸시하지 않고 로그인 여부를 어떻게 테스트하거나 확인할 수 있습니까?



답변

2020 편집

지적 ( 닫힌 ) github 문제를 다시 언급하면 실제 세션이나 상태가 없습니다.

도커 로그인은 실제로 어떤 종류의 영구 세션을 생성하지 않으며 사용자의 자격 증명 만 디스크에 저장하므로 인증이 필요할 때 로그인을 위해 읽을 수 있습니다.

다른 사람들이 지적했듯이 성공적으로 로그인 하면 auths항목 / 노드가 ~/.docker/config.json파일에 추가 됩니다 ( 개인 레지스트리 에서도 작동 함 ).

{
    "auths": {
            "https://index.docker.io/v1/": {}
    },
    ...

로그 아웃하면 다음 항목이 제거됩니다.

$ docker logout
Removing login credentials for https://index.docker.io/v1/

config.json이후 도커 내용 :

{
    "auths": {},
    ...

이 파일은 로그인 상태를 확인하기 위해 스크립트 또는 코드로 구문 분석 할 수 있습니다.

대체 방법 (재 로그인)

도커에 로그인 할 수 있습니다. docker login <repository>

$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If
you don't have a Docker ID, head over to https://hub.docker.com to
create one.
Username:

이미 로그인 한 경우 프롬프트는 다음과 같습니다.

$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If
you don't have a Docker ID, head over to https://hub.docker.com to
create one.
Username (myusername):        # <-- "myusername"

에 대한 원래 설명은 질문을~/.docker/config.json 확인하십시오 . 개인 도커 레지스트리에 로그인했는지 어떻게 알 수 있습니까?


답변

이 검사를 위해 다음 두 가지 방법 중 하나를 사용합니다.

1 : config.json 파일보기 :

“private.registry.com”에 로그인 한 경우 다음과 같은 항목이 표시됩니다 ~/.docker/config.json.

"auths": {
    "private.registry.com": {
        "auth": "gibberishgibberishgibberishgibberishgibberishgibberish"
    }
 }

2 : 도커 로그인을 다시 시도하십시오.

private.registry.com에 이미 활성 세션이 있는지 확인하려는 경우 다시 로그인 해보십시오.

bash$ docker login private.registry.com
Username (logged-in-user):

위와 같은 출력이 나오면 logged-in-user이미 private.registry.com. 대신 사용자 이름을 입력하라는 메시지가 표시되면 활성 세션이 없음을 나타냅니다.


답변

다음 명령을 수행하여 로그인 한 사용자 이름과 사용 된 레지스트리를 볼 수 있습니다.

docker system info | grep -E 'Username|Registry'


답변

지금까지의 답변은 그다지 유용하지 않습니다.

  • docker info 더 이상이 정보를 제공하지 않음
  • docker logout 큰 불편 함-이미 자격 증명을 알고 쉽게 다시 로그인 할 수없는 경우
  • docker login 응답이 매우 불안정하고 프로그램에서 구문 분석하기가 쉽지 않습니다.

나를 위해 일한 내 솔루션은 @noobuntu의 의견을 기반으로합니다 . 내가 가져올 이미지를 이미 알고 있지만 사용자가 이미 로그인했는지 확실하지 않은 경우 다음을 수행 할 수 있다고 생각했습니다.

try pulling target image
-> on failure:
   try logging in
   -> on failure: throw CannotLogInException
   -> on success:
      try pulling target image
      -> on failure: throw CannotPullImageException
      -> on success: (continue)
-> on success: (continue)


답변

개인 레지스트리의 경우 docker info. 그러나 logout 명령은 로그인했는지 알려줍니다.

 $ docker logout private.example.com
 Not logged in to private.example.com

(이렇게하면 다시 로그인해야합니다.)


답변

docker cli 자격 증명 체계는 당연히 복잡하지 않습니다.

cat ~/.docker/config.json

{
  "auths": {
    "dockerregistry.myregistry.com": {},
    "https://index.docker.io/v1/": {}

이것은 Windows (사용 Get-Content ~\.docker\config.json) 에 존재 하며 사용자 이름을 나열하는 자격 증명 도구를 살펴볼 수도 있습니다 … 그리고 암호를 검색 할 수도 있다고 생각합니다

. "C:\Program Files\Docker\Docker\resources\bin\docker-credential-wincred.exe" list

{"https://index.docker.io/v1/":"kcd"}


답변

방금 확인했지만 오늘은 다음과 같습니다.

$ docker login
Authenticating with existing credentials...
Login Succeeded

참고 : 이것은 최신 버전의 Docker CE, docker-credential-helper-둘 다 homebrew와 함께 설치된 macOS에 있습니다.