Docker를 사용하여 이미지를 다운로드(Pull)하거나 업로드(Push)하다 보면 Docker Hub 또는 Private Registry에 로그인해야 하는 상황이 자주 발생합니다. 특히 자신이 만든 이미지를 Docker Hub에 업로드하거나 회사 내부 Registry를 사용할 경우에는 반드시 인증 과정을 거쳐야 합니다.
이럴 때 사용하는 명령어가 바로 docker login입니다.
Docker Login은 Docker Registry에 사용자 계정으로 로그인하는 명령어입니다. Docker Hub뿐만 아니라 AWS ECR, Azure Container Registry(ACR), Google Artifact Registry, Harbor 등 다양한 Registry에도 로그인할 수 있습니다.
이번 글에서는 Docker Login의 개념부터 기본 사용법, 로그인 방식, 인증 정보 저장 위치, 실무 활용 사례까지 자세히 알아보겠습니다.
Docker Login이란 무엇인가?
Docker Login은 Docker Registry에 인증 정보를 등록하는 명령어입니다.
로그인이 완료되면 Docker CLI는 저장된 인증 정보를 이용하여 이미지를 Pull하거나 Push할 수 있습니다.
개인 개발 환경뿐만 아니라 CI/CD와 운영 환경에서도 매우 자주 사용하는 명령어입니다.
Docker Login은 언제 사용하는가?
다음과 같은 상황에서 많이 사용됩니다.
- Docker Hub 로그인
- Private Registry 로그인
- 이미지 Push
- Private 이미지 Pull
- CI/CD 인증
- 기업 Registry 접속
Docker Registry를 사용하는 대부분의 환경에서 필요한 명령어입니다.
Docker Login 기본 사용법
가장 기본적인 명령어는 다음과 같습니다.
docker login
명령을 실행하면 사용자 이름과 비밀번호를 입력하라는 메시지가 출력됩니다.
Username:
Password:
정상적으로 로그인되면 다음과 같은 메시지가 출력됩니다.
Login Succeeded
이후 Docker Hub를 자유롭게 사용할 수 있습니다.
특정 Registry 로그인
Docker Hub가 아닌 다른 Registry에도 로그인할 수 있습니다.
예를 들어 Harbor Registry에 로그인하는 경우입니다.
docker login harbor.example.com
Registry 주소를 함께 입력하면 해당 서버에 로그인합니다.
사용자 이름 지정
명령어에서 사용자 이름을 지정할 수도 있습니다.
docker login -u myuser
비밀번호만 입력하면 로그인할 수 있습니다.
비밀번호를 표준 입력으로 전달하기
자동화 환경에서는 --password-stdin 옵션을 사용하는 것이 권장됩니다.
echo "mypassword" | docker login -u myuser --password-stdin
비밀번호가 명령 기록에 남지 않아 더욱 안전합니다.
CI/CD 환경에서도 가장 많이 사용하는 방식입니다.
로그인 정보 저장 위치
로그인 정보는 기본적으로 다음 위치에 저장됩니다.
~/.docker/config.json
운영체제에 따라 Credential Store를 사용할 수도 있습니다.
로그인 확인
로그인이 정상적으로 되었는지 확인하려면 이미지를 다운로드하거나 업로드해 보면 됩니다.
예를 들어 Docker Hub에서 이미지를 다운로드합니다.
docker pull nginx
Private Repository도 정상적으로 접근된다면 로그인이 성공한 것입니다.
Docker Login으로 사용할 수 있는 Registry
Docker Login은 다양한 Registry를 지원합니다.
- Docker Hub
- Harbor
- AWS Elastic Container Registry(ECR)
- Azure Container Registry(ACR)
- Google Artifact Registry
- GitHub Container Registry(GHCR)
- GitLab Container Registry
대부분의 Docker Registry에서 동일한 방식으로 사용할 수 있습니다.
Docker Login 실무 활용 예제
Docker Login은 Docker Hub와 Private Registry를 사용할 때 반드시 필요한 인증 명령어입니다. 이미지 업로드(Push), Private 이미지 다운로드(Pull), CI/CD 자동 배포 등 다양한 운영 환경에서 매우 자주 사용됩니다.
Docker Hub 로그인
가장 기본적인 로그인 방법입니다.
docker login
실행하면 사용자 이름과 비밀번호를 입력하라는 메시지가 출력됩니다.
Username:
Password:
로그인이 성공하면 다음과 같은 메시지가 출력됩니다.
Login Succeeded
이후 Docker Hub의 Private Repository에도 접근할 수 있습니다.
사용자 이름 지정하여 로그인
사용자 이름을 미리 지정하는 방법입니다.
docker login -u myusername
비밀번호만 입력하면 로그인됩니다.
자동화 스크립트에서도 자주 사용하는 방식입니다.
안전한 로그인 방법
비밀번호를 명령어에 직접 입력하지 않고 표준 입력(Standard Input)을 사용하는 방법입니다.
echo "mypassword" | docker login -u myusername --password-stdin
명령 기록에 비밀번호가 남지 않아 더욱 안전합니다.
CI/CD 환경에서는 이 방식을 사용하는 것이 권장됩니다.
Private Registry 로그인
사내 Harbor Registry에 로그인하는 예제입니다.
docker login harbor.example.com
로그인이 완료되면 해당 Registry의 이미지를 자유롭게 사용할 수 있습니다.
Linux 서버 문제 해결
운영 서버에서 Private Docker 이미지를 다운로드하려고 했지만 다음과 같은 오류가 발생했습니다.
pull access denied
requested access to the resource is denied
먼저 Registry에 로그인되어 있는지 확인했습니다.
로그인이 되어 있지 않아 다음 명령을 실행했습니다.
docker login
사용자 이름과 비밀번호를 입력한 후 로그인에 성공했습니다.
이후 다시 이미지를 다운로드했습니다.
docker pull company/backend-api:latest
이번에는 정상적으로 이미지가 다운로드되었습니다.
문제의 원인은 Registry 인증 정보가 없었던 것이었습니다.
Docker Login 사용 시 주의사항
Docker Login을 사용할 때는 다음 사항을 알아두는 것이 좋습니다.
첫 번째는 비밀번호를 명령줄에 직접 입력하지 않는 것이 좋습니다.
명령 기록에 남을 수 있으므로 --password-stdin 옵션을 사용하는 것이 더욱 안전합니다.
두 번째는 로그인 정보가 로컬 시스템에 저장됩니다.
공용 서버에서는 사용 후 로그아웃하거나 Credential Manager를 사용하는 것이 좋습니다.
세 번째는 Docker Hub와 Private Registry는 각각 별도로 로그인해야 합니다.
Registry마다 인증 정보가 따로 관리됩니다.
네 번째는 CI/CD 환경에서는 개인 비밀번호 대신 Access Token을 사용하는 것이 보안상 더욱 안전합니다.
Best Practice
Docker Login을 사용할 때는 다음과 같은 방법을 추천합니다.
--password-stdin옵션을 사용합니다.- CI/CD에서는 Access Token으로 인증합니다.
- 공용 서버에서는 작업 후 Docker Logout을 수행합니다.
- Registry별 인증 정보를 구분하여 관리합니다.
- 중요한 계정은 다단계 인증(MFA)을 활성화합니다.
- 비밀번호를 코드나 스크립트에 직접 작성하지 않습니다.
이러한 방법을 적용하면 Docker Registry를 더욱 안전하게 사용할 수 있습니다.
자주 묻는 질문
Docker Login 정보는 어디에 저장되나요?
기본적으로 다음 파일에 저장됩니다.
~/.docker/config.json
환경에 따라 운영체제의 Credential Manager를 사용할 수도 있습니다.
Docker Login 없이 이미지를 다운로드할 수 있나요?
공개(Public) 이미지는 로그인 없이 다운로드할 수 있습니다.
Private Repository는 반드시 로그인해야 합니다.
Docker Hub와 Harbor는 각각 로그인해야 하나요?
네.
Registry마다 인증 정보가 별도로 관리되므로 각각 로그인해야 합니다.
CI/CD에서는 어떤 방식으로 로그인하는 것이 좋나요?
--password-stdin과 Access Token을 함께 사용하는 것이 가장 안전합니다.
마무리
Docker Login은 Docker Registry에 인증 정보를 등록하는 가장 기본적인 명령어입니다.
Docker Hub뿐 아니라 Harbor, AWS ECR, Azure Container Registry, GitHub Container Registry 등 다양한 Registry에서 동일한 방식으로 사용할 수 있으며, 이미지 업로드와 다운로드를 위한 필수 기능입니다.
운영 환경에서는 --password-stdin 옵션과 Access Token을 함께 활용하면 더욱 안전하게 Docker Registry를 사용할 수 있습니다.