-
Notifications
You must be signed in to change notification settings - Fork 20
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
[feature-request] docker: "remote-tag" images instead of pull+tag+push in case of cache-hits #33
Comments
This would be a nice feature to have indeed, particularly for saving time. So far I haven't implemented this because:
In short: I'd be surprised if the pull+push actually caused IO issues in the build nodes. |
Might be that the IO spam bit far-fetched, I cannot proof. But looking at the logs of our builds (example) where each docker build takes ~10-15s (and we have a lot of those) I'd be surprised if that does not speed up using "remote tag".
That's a fair point. This post describes a method which uses |
I'd reckon the remote tag would reduce this operation to less than 1 second (10x improvement). Because all those "push/pull" ops run at the same though, the total cost in terms of build time are low and compared to the proper build on the same order of magnitude. But yes, there would be a ~10sec improvement with remote tag.
The remote pull/push is easy enough to implement in Go because of the docker distribution/containerd libraries. It would impose a bit of a dependency burden though and make the |
I have the strong feeling that the number of parallel tasks slows down the build, either directly (CPU) or indirectly (I/O bandwith, which is tightly coupled to CPU on our rather small cloud VMs). But again I cannot prove. I guess I'll hack sth to see if there are any performance gains. 👍 |
Totally agree. We could introduce an upper limit for parallel tasks. Leeway already has a build lock mechanism, that could be extended to limit the number of concurrent build steps. |
I've implemented the concurrency limit in #38 |
When the cache registry already contains the docker image that we want to build (cache hit)
leeway
currently does basically adocker pull <version-tag> && docker tag <version-tag> <new-tag> && docker push <new-tag>
. This seems to spam IO on our build nodes and takes time as we do a "full" build on each branch creation/push.It would be nice if we could just create a new manifest which contains the already existing layers instead ("remote tag").
The text was updated successfully, but these errors were encountered: