Я уже несколько лет самостоятельно размещаю установку Discourse на виртуальном сервере DigitalOcean и многократно обновлял Discourse без каких-либо проблем — как через административную панель, так и через SSH с использованием CLI. Впервые столкнулся с проблемой. Сегодня (8 февраля 2025 года) я успешно обновил Docker-контейнер через административную панель. Затем я попытался обновить сам Discourse, но это не удалось. Я подключился по SSH и выполнил:
sudo ./launcher rebuild app
и получил следующую ошибку:
WARNING: Docker version 20.10.14 deprecated, recommend upgrade to 24.0.7 or newer.
x86_64 arch detected.
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
2.0.20250129-0720: Pulling from discourse/base
toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit
Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit
Unable to find image 'discourse/base:2.0.20250129-0720' locally
docker: Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit.
See 'docker run --help'.
Your Docker installation is not working correctly
See: https://meta.discourse.org/t/docker-error-on-bootstrap/13657/18?u=sam
(У меня больше нет доступа к сообщениям об ошибках со страницы обновления администратора, так как сервер Discourse недоступен.)
Не знает ли кто-нибудь, почему это происходит и что мне нужно сделать?
Можете порекомендовать веб-страницу с инструкциями по обновлению Docker?
Команда lsb_release -a выводит:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.4 LTS
Release: 20.04
Codename: focal
(Я откладывал обновление Linux, так как никогда не делал апгрейд ОС на DigitalOcean droplet, но понимаю, что скоро придется решиться.)
Я смотрел сайт, который вы прислали про использование Docker и лимиты, перед тем как написать сюда, но не могу в этом разобраться. Нужно ли мне платить за Docker, только чтобы обновить Discourse?
Я попытался перезапустить, запустив ./launcher start app, но получил сообщение об ошибке, почти идентичное тому, что было при запуске ./launcher rebuild app.
Прошло уже больше часа, поэтому я снова попробовал ./launcher rebuild app, но получил ту же ошибку.
Я очень ценю любую дополнительную помощь, которую вы сможете предоставить.
РЕДАКТИРОВАНИЕ: О, но у вас ошибка «слишком много запросов». Я думаю, что в такой ситуации я бы ввел
docker login
и следовал инструкциям. Похоже, что бесплатная аутентифицированная версия может решить вашу проблему.
Я рекомендую просто создать новый Droplet и следовать инструкции Перенос сайта Discourse на другой VPS с помощью rsync. Время простоя минимально, и если что-то пойдёт не так, вы можете просто удалить новый Droplet и попробовать снова.
Но пока у вас всё в порядке, так что вы можете просто выполнить
sudo apt update
sudo apt upgrade
# или, если вы хотите обновить только Docker, это, вероятно, поможет.
sudo apt install docker-ce
Я выполнил sudo apt update и sudo apt upgrade без проблем. Затем я снова попытался запустить sudo ./launcher rebuild app, но получил ошибку:
WARNING: Docker version 24.0.2 deprecated, recommend upgrade to 24.0.7 or newer.
x86_64 arch detected.
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
Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit
Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit
Unable to find image 'discourse/base:2.0.20250129-0720' locally
docker: Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit.
See 'docker run --help'.
Your Docker installation is not working correctly
Обратите внимание, что это та же ошибка, что и раньше, но теперь устаревшая версия — 24.0.2 вместо 20.10.14. Я попробовал sudo apt install docker-ce, но при запуске sudo ./launcher rebuild app возникает та же ошибка. Похоже, система не хочет обновляться до версии 24.0.7 или новее.
Я только что успешно создал вход в Docker через веб-сайт Docker. Я могу войти на сайт Docker, но при запуске docker login в командной строке и вводе имени пользователя и пароля (которые я скопировал и вставил из связки ключей, чтобы избежать опечаток), получаю:
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/auth": dial unix /var/run/docker.sock: connect: permission denied
Я пробовал несколько раз на случай, если я неправильно вставил пароль, но безрезультатно. Нужно ли мне создать другой вход?
Я очень ценю любые дополнительные советы, которые вы сможете предоставить!
Для вашей ОС это лучший возможный вариант. Скорее всего, этого достаточно.
Да. В этом случае система попытается обновить только Docker. В некоторых ситуациях Docker может называться по-разному, поэтому я подумал, что обновление всего будет более надёжным решением.
Система запрашивает учётные данные Docker, а не вашей операционной системы. Когда я делаю то же самое, я получаю что-то вроде этого:
ИСПОЛЬЗУЕТСЯ ВЕБ-ВХОД
Чтобы войти с учётными данными в командной строке, используйте 'docker login -u <username>'
Ваш одноразовый код подтверждения устройства: WZYX-ABCD
Нажмите ENTER, чтобы открыть браузер, или введите код устройства здесь: https://login.docker.com/activate
Запускаете ли вы это от имени root или от имени пользователя, у которого нет прав на использование Docker?
Да, проблема заключалась в том, что я выполнил команду docker login вместо sudo docker login, так как не работал от имени root. Но я вводил свои учётные данные Docker (имя пользователя и пароль), а не учётные данные операционной системы. Я не так уж плох!
Я снова запустил sudo ./launcher rebuild app и больше не получил ошибок! Программа попросила запустить её ещё раз, и я выполнил это. Затем я запустил sudo ./launcher start app, и всё работает!
Огромное спасибо! Мне просто нужно было выполнить вход в Docker (а затем войти как root).
Вы были невероятно полезны! Ещё раз спасибо за вашу щедрость и терпение! Надеюсь, эта тема поможет другим, столкнувшимся с той же проблемой.
Ну, я не всегда могу угадать, что кому кажется логичным.
Рад, что вы разобрались.
Спасибо за обновление! Это первый раз, когда я сталкиваюсь с такой проблемой, и я рад, что моё предложенное решение сработало. Интересно, станет ли это более распространённой проблемой в будущем.