Impossibile scaricare l'immagine base di Discourse perché il login Docker non funzionava

Ho appena ricevuto questo strano errore durante il bootstrap.

Ho aggiornato questo sito 2 giorni fa senza problemi.

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

È un’istanza multisito con Caddy come reverse proxy, ma un’installazione abbastanza standard che funziona da anni.

Cosa succede con un semplice docker pull 'discourse/base:2.0.20200429-2110'?

root@support:/var/discourse# docker pull 'discourse/base:2.0.20200429-2110'
Risposta di errore dal demone: Get https://registry-1.docker.io/v2/discourse/base/manifests/2.0.20200429-2110: non autorizzato: si prega di utilizzare un token di accesso personale per accedere
root@support:/var/discourse# 

anche:

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

Il tuo daemon Docker locale sta tentando di autenticarsi a quel repository. Controlla la sua configurazione nel file JSON.

Questo sembra un consiglio saggio, ma non so come metterlo in pratica.

docker run -it --rm hello-world

fallisce in modo simile.

Ho appena aggiornato Docker alla versione 19.03.8 (prima ero sulla 18.03 circa) e ho riavviato il sistema. I container esistenti sono ripartiti.

Non ho la minima idea di cosa possa essere cambiato e aver rotto tutto. Ho controllato /etc/docker/key.json e sembra molto simile a quello presente su un’altra macchina.

Cercando su Google: “docker unauthorized: please use personal access token to login for public repo” non mi sta aiutando.

docker login potrebbe risolvere il tuo problema.

Puoi anche controllare il file ~/.docker/config.json per vedere per quali registry hai le credenziali: se non hai bisogno di eseguire l’accesso, puoi semplicemente rimuoverle da quel file.

Era proprio quello!

Sono andato su docker settings/security, ho generato un nuovo token e ho eseguito docker login --username pfaffman, incollando la nuova chiave. Non so perché quella vecchia abbia smesso di funzionare o perché ne avessi bisogno all’improvviso. Solo due giorni fa avevo effettuato un aggiornamento senza problemi.

Grazie, Michael!