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에 있습니다.
