Не удалось получить базовый образ Discourse, так как вход в Docker был нерабочим

Я только что получил эту странную ошибку при попытке инициализации.

Обновлял этот сайт 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'
Ошибка ответа от демона: Get https://registry-1.docker.io/v2/discourse/base/manifests/2.0.20200429-2110: unauthorized: пожалуйста, используйте личный токен доступа для входа
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":"требуется аутентификация","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, и он выглядит очень похоже на тот, что есть на другой машине.

Поиск в Google по запросу “docker unauthorized: please use personal access token to login for public repo” не помогает.

docker login может решить вашу проблему.

Вы также можете посмотреть файл ~/.docker/config.json, чтобы проверить, для каких реестров у вас есть учётные данные. Если вам не нужно выполнять вход, вы можете просто удалить их из этого файла.

Именно это и помогло!

Я перешёл в раздел настройки безопасности Docker, сгенерировал новый токен и выполнил docker login --username pfaffman, вставив новый ключ. Не понимаю, почему старый токен перестал работать или почему он вдруг понадобился. Ещё два дня назад я обновлял систему без каких-либо проблем.

Спасибо, Майкл!