-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Figure out docker hub caching #176
Comments
Yeah, I'd prefer to avoid ~personal/team accounts on Docker Hub, seems like unnecessary hassle, and 200 pulls / 6 hours also doesn't feel that high that this fully solves the problem.
It is per IP: " *** Data transferred out from public repositories is limited by source IP when an AWS account is not used." (https://aws.amazon.com/ecr/pricing/) 5 TB isn't a cap, it's just the free tier. Past that we start paying, but I'd expect that in practice we wouldn't use much beyond 5 TB (if at all, that's a pretty large amount of data). For ECR, if it's not in the existing public gallery, we could probably configure pull through caching (https://docs.aws.amazon.com/AmazonECR/latest/userguide/pull-through-cache.html), though it sounds like that would require authentication. I'm much more comfortable with not ending up needing multiple Docker hub accounts to distribute load (as seems likely if e.g. rust-lang/rust uses this).
I think base images get updated pretty regularly? At least I'd expect that e.g. ubuntu:22.04 is getting updates constantly -- it was updated just 8 days ago (way after initial release) https://hub.docker.com/layers/library/ubuntu/22.04/images/sha256-3d1556a8a18cf5307b121e0a98e93f1ddf1f3f8e092f1fddfd941254785b95d7?context=explore |
This is on my todo list now 👍 |
ECR issuesI'm summarizing some of the discussions we had in Zulip. The ECR unauthenticated rate limit of 500GB/month per IP is an issue for the following reasons:
An option is hardcoding the AWS key using to authenticate to ECR, but GHCRI suggest we use GHCR instead and forget about rate limits. I found two solutions to periodically mirror the images from DockerHub to GHCR:
|
FYI -- https://github.com/orgs/community/discussions/45253#discussioncomment-4769997 suggests there are some hidden, internal rate limits for pushing to GHCR at least, though I somewhat doubt we'll hit them in practice. Generally speaking using GHCR seems pretty reasonable, if we can get the mirroring at least semi-automated -- that will take a bit of work but probably not too hard. |
It was very easy to setup:
|
I created rust-lang/rust#135574 but it didn't work:
Logs here. I will investigate |
I think that the issue might be that we're trying to push to the organization's image hub, rather than the repository's image hub, I think that more permissions are needed for that. But I suppose we could just push to |
Something was pushed It just failed to write the manifest, which means the tags aren't there 🤔 |
Isn't it r-l/rust and r-l-ci/rust? |
no 🙈 |
I reported this bug here |
![]() The image now has one |
In GitHub Actions we periodically have problems hitting the Docker Hub rate limit which was introduced in November 2020 (error is "429 Too Many Requests"). This hits any repo using Docker (such as rust-lang/rust, and rust-lang/cargo).
The anonymous Docker Hub rate limit is 100 pulls / 6 hours / IP. source
There have been a few solutions proposed:
I do not know what the performance and reliability compares between ghcr and amazon ecr.
Would the infra team have a preference here? I prefer whatever is easiest 😜. ghcr seems appealing to me if the infra team is ok with handling uploading new images.
The text was updated successfully, but these errors were encountered: