docker logout 명령어를 사용하여 레지스트리에서 로그아웃하는 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 docker logout 명령어를 사용하여 Docker 레지스트리에서 안전하게 로그아웃하는 방법을 배우겠습니다. 먼저 docker logout 명령어의 목적과 저장된 자격 증명을 제거하는 것이 왜 중요한지 이해하는 것으로 시작합니다. 그런 다음 기본 Docker 레지스트리 (Docker Hub) 에서 로그아웃하는 방법과 특정, 기본이 아닌 레지스트리에서 로그아웃하는 방법을 살펴보겠습니다. 이 실습 랩은 Docker 레지스트리 로그인 세션을 관리하는 실질적인 단계를 안내합니다.

docker logout 의 목적 이해

이 단계에서는 docker logout 명령어의 목적을 이해하겠습니다. docker login 명령어를 사용하여 Docker 레지스트리에 로그인하면 자격 증명이 시스템에 저장됩니다. 이렇게 하면 매번 사용자 이름과 비밀번호를 다시 입력하지 않고도 레지스트리에서 이미지를 푸시하고 풀할 수 있습니다. 그러나 보안상의 이유로, 특히 공유 환경이나 작업을 완료한 후에는 레지스트리에서 로그아웃하는 것이 중요합니다. docker logout 명령어는 이러한 저장된 자격 증명을 제거하는 데 사용됩니다.

먼저 현재 Docker 레지스트리에 로그인되어 있는지 확인해 보겠습니다. 인증이 필요한 이미지를 풀하거나 Docker 가 자격 증명을 저장하는 구성 파일을 확인하여 확인할 수 있습니다. Docker 구성의 기본 위치는 ~/.docker/config.json입니다.

cat 명령어를 사용하여 이 파일의 내용을 볼 수 있습니다.

cat ~/.docker/config.json

로그인되어 있다면, 로그인한 레지스트리에 대한 정보와 암호화된 자격 증명을 포함하는 "auths": { ... }와 같은 섹션이 표시됩니다. 로그인하지 않은 경우 auths 섹션이 비어 있거나 없을 수 있습니다.

docker logout 명령어는 간단합니다. 인수가 없이 실행하면 일반적으로 Docker Hub 인 기본 Docker 레지스트리에서 로그아웃됩니다.

로그인을 시뮬레이션해 보겠습니다 (실제로 여기서는 로그인하지 않으며, 로그아웃 이해에 초점을 맞춥니다). 그런 다음 docker logout이 어떻게 작동하는지 이해해 보겠습니다. 방금 docker login을 실행했다고 가정해 봅시다. ~/.docker/config.json 파일이 로그인 정보로 업데이트됩니다.

이제 기본 레지스트리 (Docker Hub) 에서 로그아웃하려면 다음을 실행하면 됩니다.

docker logout

이 명령어를 실행하면 Docker 는 기본 레지스트리에 대한 자격 증명을 ~/.docker/config.json 파일에서 제거합니다. 즉, 인증이 필요한 Docker Hub 에서 이미지를 푸시하거나 풀하려면 다시 로그인해야 합니다.

다음 단계에서는 실제로 로그인 및 로그아웃 작업을 수행하여 docker logout 명령어의 효과를 확인합니다.

기본 레지스트리에서 로그아웃

이 단계에서는 기본 Docker 레지스트리인 Docker Hub 에서 로그아웃하는 연습을 해보겠습니다. 이 랩 환경에서는 명시적으로 로그인하지 않았지만, docker logout 명령어는 기존 자격 증명을 제거하도록 설계되었습니다. 로그인하지 않은 상태에서 docker logout을 실행하면 로그인하지 않았다는 메시지가 표시됩니다. 이는 예상되는 동작이며, 명령어가 자격 증명을 확인하고 잠재적으로 제거하기 위해 올바르게 작동하고 있음을 확인합니다.

먼저 기본 레지스트리에서 로그아웃을 시도해 보겠습니다. ~/project 디렉토리에서 터미널을 열고 다음 명령을 실행합니다.

docker logout

다음과 유사한 출력을 볼 수 있습니다.

Not logged in to any registry

이 메시지는 ~/.docker/config.json 파일에 기본 레지스트리 (Docker Hub) 에 대한 저장된 자격 증명이 없음을 확인합니다. 로그인했었다면, 출력은 성공적인 로그아웃을 나타낼 것입니다.

docker logout의 효과를 더 잘 이해하기 위해 로그아웃을 시도한 후 다시 ~/.docker/config.json 파일을 살펴보겠습니다.

cat ~/.docker/config.json

auths 섹션이 존재하고 기본 레지스트리에 대한 자격 증명을 포함했다면, 이제 비어 있거나 https://index.docker.io/v1/에 대한 항목이 제거되었음을 알 수 있습니다. 로그인하지 않았으므로 파일의 내용은 이전과 동일하게 유지되어야 하며, 아마도 auths 섹션이 비어 있거나 없을 것입니다.

이 단계에서는 인수가 없는 docker logout의 기본 사용법을 보여주며, 이는 기본 Docker Hub 레지스트리를 대상으로 합니다. 다음 단계에서는 특정, 기본이 아닌 레지스트리에서 로그아웃하는 방법을 살펴보겠습니다.

특정 레지스트리에서 로그아웃

이 단계에서는 기본 Docker Hub 가 아닌 특정 Docker 레지스트리에서 로그아웃하는 방법을 배우겠습니다. 이는 개인 회사 레지스트리 또는 클라우드 제공업체의 컨테이너 레지스트리와 같이 여러 레지스트리를 사용하는 경우에 유용합니다.

특정 레지스트리에서 로그아웃하려면 docker logout 명령어에 레지스트리의 호스트 이름을 인수로 제공해야 합니다.

이 랩에서는 특정 개인 레지스트리가 설정되어 있지 않으므로, 명령의 구문을 설명하기 위해 가상 예제를 사용하겠습니다. my-private-registry.example.com에 위치한 레지스트리에 로그인했다고 가정해 보겠습니다. 이 특정 레지스트리에서 로그아웃하려면 다음 명령을 사용합니다.

docker logout my-private-registry.example.com

이 명령을 실행하면 Docker 는 ~/.docker/config.json 파일에서 my-private-registry.example.com과 관련된 자격 증명을 찾아 제거합니다. 해당 특정 레지스트리에 로그인하지 않은 경우 Docker 가 이를 알려줍니다.

존재하지 않는 레지스트리에서 로그아웃을 시도하여 이를 시뮬레이션해 보겠습니다. 이렇게 하면 명령 구조와 구성에서 레지스트리를 찾을 수 없을 때 예상되는 출력을 보여줍니다.

docker logout non-existent-registry.example.com

다음과 유사한 출력을 볼 수 있습니다.

Not logged in to non-existent-registry.example.com

이 메시지는 Docker 가 non-existent-registry.example.com에 대한 자격 증명을 찾고 제거하려고 시도했지만 찾지 못했음을 확인합니다.

특정 레지스트리에서 로그아웃하는 기능은 서로 다른 이미지 소스에 대한 액세스를 관리하고 불필요한 저장된 자격 증명을 제거하여 보안을 유지하는 데 중요합니다.

요약하면, 인수가 없는 docker logout는 기본 Docker Hub 에서 로그아웃하고, docker logout <registry-hostname>는 특정 레지스트리에서 로그아웃합니다.

요약

이 랩에서는 보안상의 이유로 저장된 Docker 레지스트리 자격 증명을 제거하는 데 필수적인 docker logout 명령의 목적을 배웠습니다. docker login으로 로그인한 후 자격 증명이 ~/.docker/config.json에 저장된다는 것을 이해했습니다. 로그인했는지 확인하기 위해 이 파일을 확인하는 방법을 배웠습니다.

그런 다음 docker logout 명령 자체에 집중했습니다. 인수가 없는 docker logout를 실행하면 구성 파일에서 자격 증명을 제거하여 기본 Docker 레지스트리 (Docker Hub) 에서 로그아웃한다는 것을 배웠습니다. 이렇게 하면 기본 레지스트리를 사용하여 인증이 필요한 후속 작업에 새로운 로그인이 필요하게 됩니다.