docker pull 했을 때 no basic auth credentials 에러
$ docker pull docker.jihoon.io/example_images:1.0.0
Error response from daemon: Head https://docker.jihoon.io/example_images:1.0.0: no basic auth credentials

docker-compose up -d 했을 때 no basic auth credentials 에러
$ docker-compose up -d
Pulling app (docker.jihoon.io/example_images:1.0.0)...
ERROR: Head https://docker.jihoon.io/example_images:1.0.0: no basic auth credentials

원인

이미지를 불러오는 주소를 보면 이미지 위치가 https://docker.jihoon.io/ 여기다. 여기에 로그인이 되어있고 docker pull 권한이 있어야 되는데 그렇지 못해서 발생하는 에러

해결

계정이 있다면 login을 하면 된다.

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

Login Succeeded

알아둘것

위 로그인 성공 메시지를 봐도 알수 있지만 /home/jihoon/.docker/config.json 에 로그인 정보가 저장된다.

확인해보면 아래와 같다.

$ cat /home/jihoon/.docker/config.json
{
	"auths": {
		"docker.jihoon.io": {
			"auth": "aml98sdga92mtsdd6cXdlcngwwjEywMzh="
		}
	}
}

알아둬야할것은 root 계정은 별도이다. 위의 예시에서 jihoon 계정으로 docker login을 했다면 jihoon 계정에 대해서만 로그인이 된것이고 다른 계정은 여전히 권한이 없다.

root계정의 config를 확인해보면 파일이없거나 아래처럼 비어있다.

$ sudo cat /root/.docker/config.json
{
	"auths": {}
}

sudo 명령어를 써서 docker pull을 한다면 똑같이 no basic auth 에러가 발생한다.

반대로 sudo docker login 으로 로그인을 했다면 jihoon 계정으로 docker pull을 못하고 root 계정으로(sudo 이용해서) 가능하다.