When running a ./launcher rebuild app, I get the following errors:
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: Usage and rate limits | Docker Docs
Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: Usage and rate limits | Docker Docs
Unable to find image ‘discourse/base:2.0.20241203-0251’ locally
docker: Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: Usage and rate limits | Docker Docs.
See ‘docker run --help’.
Your Docker installation is not working correctly
The site is running fine, but I need to install some plugins. I am trying to get a clean rebuild of the app before making any changes to the app.yml file. Thoughts?
*** FIX FOR ISSUE ***
My server was using IPv6. DockerHub is using larger blocks of IPv6 to determine rate limiting. Since my server is hosted at Digital Ocean, i was being lumped into a larger group of servers and exceeding the rate limit. I turned off IPv6 and everything went back to normal. Here are the instructions for turning off IPv6 on a DO server.
A possibly useful test is the very small hello world image:
/var/discourse# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
478afc919002: Pull complete
Digest: sha256:5b3cc85e16e3058003c13b7821318369dad01dac3dbb877aac3c28182255c724
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(arm64v8)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
docker run hello-world
Unable to find image ‘hello-world:latest’ locally
docker: Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: Usage and rate limits | Docker Docs.
See ‘docker run --help’.
I just encountered this problem on two Discourse forums (different servers/IPs).
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.20241203-0251' 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
I hope this isn’t a sudden restriction by Docker to try to force people to pay.
This is what Docker’s AI assistant says, but the new rate limits aren’t supposed to happen until March 1st. (If Discourse makes more than 10 pulls during a rebuild, that’s probably going to affect people. Edit: it looks like it’s already limited to 10.)
Based on the knowledge sources provided, it appears that Docker has indeed made changes to their rate limiting policies recently. Here’s what I can tell you:
Docker announced new usage and rate limits for Docker Hub that will take effect on March 1, 2025. According to the Docker Hub usage and rate limits documentation:
For unauthenticated users, there is a pull rate limit of 10 pulls per hour per IP address.
For authenticated Docker Personal users, the pull rate limit is 40 pulls per hour.
For Docker Pro, Team, and Business authenticated users, there are no pull rate limits.
Additionally, Docker has introduced new pull limits based on subscription tiers:
“Docker has enabled download rate limits for downloads and pull requests on Docker Hub. This caps the number of objects that users can download within a specified timeframe.”
To avoid hitting these limits, you can:
Authenticate your pulls if you haven’t already.
Upgrade to a paid plan if you need higher limits.
Implement best practices for managing Docker Hub usage, such as using caching and optimizing your pull strategies.
If you’re experiencing rate limits on multiple sites, it’s possible that you’re hitting limits for different services or that your IP address is being shared, leading to cumulative rate limiting. However, the information provided specifically pertains to Docker Hub rate limits.
Thank you for validating the problem is not just my system.
I was able to upgrade both the docker manager and discourse system levels from within admin without any issues. Any time I try to run a launcher rebuild, I get the rate limit errors.
I’ve opened a support case with DigitalOcean for this and have a confirmation that this is an issue, but for ipv6 enabled droplets only.
Docker Hub is rate limiting based on the net range instead of a single IP for ipv6 (which depletes 100 pulls per 6 hours for anonymous pulls almost instantly for large vps providers).
If you disable ipv6 you should be able to rebuild.
Same issue then, try disabling ipv6 on the DO web mgmt if you don’t need it for some other service (I think you can do it without rebooting the droplet) and try again.
I don’t see a way to turn of IPv6 in the droplet settings, but I’ll take a closer look later.
I was wrong about the updates working from the dashboard. One worked but the other one crashed in the middle. The dashboard now says that it’s out of date:
Edit: the message went away after rebooting the droplet.
but clicking on that takes me to a page that says everything is up to date: