Não consigo puxar a imagem base do Discourse porque o login do Docker estava quebrado

Acabei de receber este erro estranho ao tentar inicializar.

Atualizei este site há 2 dias sem problemas.

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

AVISO: Estamos prestes a começar a baixar a imagem base do Discourse
Esse processo pode levar de alguns minutos a uma hora, dependendo da velocidade da sua rede

Por favor, tenha paciência

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

É uma instância multissítio com Caddy como proxy reverso, mas uma instalação bastante padrão que vem funcionando há anos.

O que acontece ao executar docker pull 'discourse/base:2.0.20200429-2110' sem parâmetros adicionais?

root@support:/var/discourse# docker pull 'discourse/base:2.0.20200429-2110'
Erro na resposta do daemon: Get https://registry-1.docker.io/v2/discourse/base/manifests/2.0.20200429-2110: não autorizado: por favor, use um token de acesso pessoal para fazer login
root@support:/var/discourse# 

também:

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

Seu daemon local do Docker está tentando autenticar-se nesse repositório. Verifique a configuração no arquivo JSON.

Isso parece um conselho sensato, mas não sei como agir sobre ele.

docker run -it --rm hello-world

falha de forma semelhante.

Acabei de atualizar o Docker para a versão 19.03.8 (estava na 18.03, mais ou menos) e reiniciei o sistema. Os contêineres existentes voltaram a subir.

Não faço a menor ideia do que possa ter mudado e quebrado isso. Verifiquei /etc/docker/key.json e ele parece muito com um que está em outra máquina.

Pesquisar no Google: “docker unauthorized: please use personal access token to login for public repo” não está ajudando.

docker login pode resolver seu problema.

Você também pode verificar o arquivo ~/.docker/config.json para ver em quais registros você tem credenciais. Se não precisar fazer login, basta removê-los desse arquivo.

Foi isso mesmo!

Fui em docker settings/security, gerei um novo token e executei docker login --username pfaffman, colando a nova chave. Não sei por que a antiga parou de funcionar ou por que eu precisaria dela de repente. Foi apenas dois dias atrás que fiz uma atualização sem nenhum problema.

Obrigado, Michael!