docker login이 깨져서 discourse base 이미지를 가져올 수 없음

부트스트랩을 시도하다가 이상한 오류가 발생했습니다.

2일 전에는 문제없이 이 사이트를 업데이트했습니다.

root@support:/var/discourse# ./launcher bootstrap multi

WARNING: We are about to start downloading the Discourse base image
This process may take anywhere between a few minutes to an hour, depending on your network speed

Please be patient

Unable to find image 'discourse/base:2.0.20200429-2110' locally
/usr/bin/docker: Error response from daemon: Get https://registry-1.docker.io/v2/discourse/base/manifests/2.0.20200429-2110: unauthorized: please use personal access token to login.
See '/usr/bin/docker run --help'.
Your Docker installation is not working correctly

See: https://meta.discourse.org/t/docker-error-on-bootstrap/13657/18?u=sam
root@support:/var/discourse# docker version
Client:
 Version:           18.09.6
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        481bc77
 Built:             Sat May  4 02:35:27 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.6
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.8
  Git commit:       481bc77
  Built:            Sat May  4 01:59:36 2019
  OS/Arch:          linux/amd64
  Experimental:     false

root@support:/var/discourse# docker ps
CONTAINER ID        IMAGE                   COMMAND             CREATED             STATUS              PORTS                  NAMES
1e63a91934e8        local_discourse/multi   "/sbin/boot"        2 days ago          Up 2 days           0.0.0.0:7777->80/tcp   multi
8681e70a72a0        local_discourse/data    "/sbin/boot"        4 months ago        Up 3 weeks                                 data
root@support:/var/discourse# docker ps

Caddy를 리버스 프록시로 사용하는 멀티사이트 인스턴스이지만, 수년 동안 잘 작동해 온 꽤 표준적인 설치 환경입니다.

맨입으로 docker pull 'discourse/base:2.0.20200429-2110'을 실행하면 어떤 일이 일어나나요?

root@support:/var/discourse# docker pull 'discourse/base:2.0.20200429-2110'
Error response from daemon: Get https://registry-1.docker.io/v2/discourse/base/manifests/2.0.20200429-2110: unauthorized: please use personal access token to login
root@support:/var/discourse# 

또한:

root@support:/var/discourse# curl https://registry-1.docker.io/v2/discourse/base/manifests/2.0.20200429-2110
{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"discourse/base","Action":"pull"}]}]}
root@support:/var/discourse# 

로컬 Docker 데몬이 해당 리포지토리에 인증을 시도하고 있습니다. JSON 파일의 설정을 확인해 주세요.

이것은 현명한 조언처럼 들리지만, 어떻게 행동해야 할지 모르겠습니다.

docker run -it --rm hello-world

이 명령어도 비슷하게 실패합니다.

최근에 Docker를 19.03.8로 업그레이드하고(예전에는 18.03 정도였습니다) 재시작했습니다. 기존 컨테이너들은 다시 실행되었습니다.

이것이 깨지는 원인이 될 수 있는 변경 사항이 무엇인지 전혀 감이 잡히지 않습니다. /etc/docker/key.json을 살펴봤는데, 다른 머신에 있는 것과 매우 유사해 보입니다.

"docker unauthorized: please use personal access token to login for public repo"로 검색해 봐도 도움이 되지 않습니다.

docker login 명령이 문제를 해결할 수 있습니다.

또한 ~/.docker/config.json 파일을 확인하여 어떤 레지스트리에 대한 자격 증명이 저장되어 있는지 살펴볼 수 있습니다. 로그인이 필요하지 않다면 해당 자격 증명을 파일에서 삭제하면 됩니다.

정말 그랬네요!

docker 설정/보안 페이지로 가서 새로운 토큰을 생성한 뒤 docker login --username pfaffman을 실행하고 새로운 키를 붙여넣었습니다. 왜 이전 토큰이 갑자기 작동하지 않게 되었는지, 또 왜 갑자기 토큰이 필요한지 모르겠습니다. 불과 이틀 전까지만 해도 아무 문제 없이 업그레이드를 했거든요.

감사합니다, 마이클!