LainyZine: 프로그래머 가이드 🐣

docker login 사용법: Docker Hub 로그인하는 방법

커맨드라인에서 Docker 클라이언트를 사용할 때 이미지 푸시 등 Docker Hub의 일부 기능을 사용하기 위해서 Docker 로그인을 해야합니다.

로그인을 하면 Docker Hub 이미지 저장소에 이미지를 Push할 수 있으며, 이미지 Pull 제한도 완화됩니다. 이 글에서는 Docker CLI 클라이언트에서 Docker Hub 로그인하는 방법을 소개합니다. Docker 계정을 가지고 있으며 Docker가 설치되어있다고 가정합니다.

ID / 비밀번호로 로그인하는 방법

Docker Hub에 로그인하기 위해서 docker login 서브 커맨드를 사용합니다. [ID]를 자신의 아이디로 변경해주세요.

$ docker login -u [ID]

실제로 로그인을 해보겠습니다. 로그인 명령어를 입력하면 패스워드 입력 대기 상태가 됩니다.

$ docker login -u lainyzine
Password:

Docker Hub의 패스워드를 입력하면 로그인이 되고, 다음 메시지가 나타납니다.

WARNING! Your password will be stored unencrypted in /home/lainyzine/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

메시지를 살펴보면 지금 로그인한 패스워드 정보가 ~/.docker/config.json에 저장된다는 내용입니다. 이에 대해서는 뒤에서 다시 다루겠습니다.

마지막 줄의 Login succeeded 메시지로 로그인이 성공했다는 것을 알 수 있습니다.

ID / Personal Access Token으로 로그인하는 방법

Docker Hub에서 2단계 인증을 활성화한 경우 패스워드로 로그인을 할 수 없습니다. 이 경우 Personal Access Token을 발급해야 합니다. Docker Hub에서 2단계 인증을 활성화하는 방법과 토큰을 발급하는 방법에 대해서는 다음 글에서 소개합니다.

2단계 인증이 활성화된 상태에서 로그인을 시도해보겠습니다. 단, 이 때 패스워드를 입력하면 인증에 실패합니다.

$ docker login -u lainyzine
Password:
Error response from daemon: Get https://registry-1.docker.io/v2/: unauthorized: please use personal access token to login

메시지를 살펴 보면 인증에 실패했으며, Personal Access Token을 사용하라고 합니다.

이번에는 Personal Access Token으로 로그인을 해보겠습니다. 명령어는 동일합니다. 단, 패스워드 입력 대기 상태에서 발급 받은 토큰을 입력해주세요.

$ docker login -u lainyzine
Password:
WARNING! Your password will be stored unencrypted in /home/lainyzine/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

로그인에 성공했습니다! 🥳

이번에도 ~/.docker/config.json에 패스워드(토큰)이 저장된다는 경고가 나타납니다.

부록: 패스워드 저장에 대한 보안 경고

docker login 명령어를 사용하면 홈 디렉터리 아래에 로그인 정보를 저장해두고 사용합니다. 앞선 경고 메시지에 있는 경로를 확인해보겠습니다.

$ cat ~/.docker/config.json
{
    "auths": {
        "https://index.docker.io/v1/": {
            "auth": "b77o923ehG6aGGW51pGRzdFFAojA="
        }
    }
}

https://index.docker.io/v1/에 로그인한 정보가 그대로 저장되어있습니다. 이 정보는 base64로 인코딩되어있으며, 디코드해보면 ID와 패스워드(혹은 토큰) 정보가 고스란히 담겨있습니다. 😦

개인 데스크톱의 경우 큰 문제가 없을 수도 있습니다만, 공용 PC나 서버의 경우 사실 상 패스워드가 무방비 상태로 노출되어있다고 할 수 있습니다. Docker에서는 이 정보를 안전하게 사용하기 위한 Credentials store에 대한 정보를 제공하고 있으니 참고해주세요.

OS나 환경 별로 설정 방법이 달라서 이 글의 범위는 넘어서므로, 이에 대해서는 다른 글에서 소개해보도록 하겠습니다.

추천 문서

LainyZine은 쿠팡 파트너스 활동에 따른 수수료를 제공받습니다.