frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Show HN: Docker pulls more than it needs to - and how we can fix it

https://dockerpull.com
3•a_t48•1h ago
Hi all!

I've built a small tool to visualize how inefficient `docker pull` is, in preparation for standing up a new Docker registry + transport. It's bugged me for a while that updating one dependency with Docker drags along many other changes. It's a huge problem with Docker+robotics. With dozens or hundreds of dependencies, there's no "right" way to organize the layers that doesn't end up invalidating a bunch of layers on a single dependency update - and this is ignoring things like compiled code, embedded ML weights, etc. Even worse, many robotics deployments are on terrible internet, either due to being out in the boonies or due to customer shenanagins. I've been up at 4AM before supporting a field tech who needs to pull 100MB of mostly unchanged Docker layers to 8 robots on a 1Mbps connnection. (and I don't think that robotics is the only industry that runs into this, either - see the ollama example, that's a painful pull)

What if Docker were smarter and knew about the files were already on disk? How many copies of `python3.10` do I have floating around `/var/lib/docker`. For that matter, how many copies of it does DockerHub have? A registry that could address and deduplicate at the file level rather than just the layer level is surely cheaper to run.

This tool:

    - Given two docker images, one you have and one you are pulling, finds how much data docker pull would use, as well as how much data is _actually_ required to pull

    - Shows an estiimate for how much time you will save on various levels of cruddy internet

    - There's a bunch of examples given of situations where more intelligent pulls would help, but the two image names are free text, feel free to write your own values there and try it out (one at a time though, there's a work queue to analyze new image pairs)

The one thing I wish it had but haven't gotten around to fitting in the UI somehow is a visualization of the files that _didn't_ change but are getting pulled anyhow.

It was written entirely in Claude Code, which is a new experience for me. I don't know nextjs at all, I don't generally write frontends. I could have written the backend maybe a little slower than Claude, but the frontend would have taken me 4x as long and wouldn't have been as pretty. It helped that I knew what I wanted on the backend, I think.

The registry/transport/snapshotter(?) I'm building will allow both sharing files across docker layers on your local machine well as in the registry. There's a bit of prior art with this, but only on the client side. The eStargz format allows splitting apart the metadata for a filesystem and the contents, while still remaining OCI compliant - but it does lazy pulls of the contents, and has no deduplication. I think it could easily compete with other image providers both on cost (due to using less storage and bandwidth...everywhere) as well as speed.

If you'd be interested, please reach out.

Comments

PaulHoule•1h ago
Back in the early 2010s I couldn't bring up Docker images at all on my 2mbps DSL because any attempt to download images would time out.
theamk•1h ago
Reminds me of OSTree and casync.
danudey•1h ago
If you're interested in implementing this directly into your dockerfiles with some minimal changes, Docker already supports this to a degree:

https://docs.docker.com/reference/dockerfile/#copy---link

The TL;DR:

If you change your dockerfile to use `COPY --link <foo> <bar>`, then docker will create a layer containing only the files that would be copied, and that layer is treated as independent of layers coming before it. The only caveat is that you need to have a build cache with previous builds and use --cache-from to specify it, which means saving build state.

That said, there are a lot of benefits you can get very quickly if you can implement it. For example, if you have a dockerfile which creates a container, builds your golang application in it, and then copies the result into a fresh alpine:3.23.3 image, and you use a local cache for that build, then when you update to alpine 3.23.4 it will see that the build layers have not changed, therefore the `COPY --link` layer has not changed. Thus, it can just directly apply that on top of the new alpine image without doing any extra work.

Apparently it can even be smart enough to realize that it doesn't need to pull down the new alpine:3.23.4 image; it can just create a manifest that references its layers and upload the manifest; the new alpine image layers are there, the original 'my application' layers are already there, so it just creates a new manifest and publishes it. No bandwidth used at all!

> How many copies of `python3.10` do I have floating around `/var/lib/docker`.

Well, if you use 'FROM python:3.10' for your images then only one.

If you're careful, you can sort of pull together contents of multiple images by using `COPY --link`, and then even if you have 10 layers then changing from python:3.10 to python:3.14 only changes one of them.

Again, this does require that you maintain a cache, but that cache can live in a lot of places that doesn't have to be the local filesystem: https://docs.docker.com/reference/cli/docker/buildx/build/#c...

a_t48•59m ago
I'm well aware of `COPY --link`, it doesn't solve the problem. I'm a heavy heavy user of it, combined with throwaway build stages. `COPY --link` won't help my `apt install` commands.

The use case here isn't `FROM python:3.10`, it's `FROM ubuntu; RUN apt install -y vim wget curl software-properties-common python3.10`/`RUN rosdep install`/`RUN --mount=type=cache,target=/root/.cache/uv --mount=type=bind,source=uv.lock,target=uv.lock --mount=type=bind,source=pyproject.toml,target=pyproject.toml uv sync --locked --no-install-project`. All of those dependencies get merged onto a single layer that isn't shared with anything else. You'd better hope something like tensorflow isn't one of those dependencies.

Musk tells jury 'people read too much' into his posts

https://www.bbc.com/news/articles/c7433dz4ykwo
1•inaros•1m ago•0 comments

Web-Haptics: Haptic Feedback Comes to iOS Safari

https://veritula.com/ideas/4511-web-haptics-haptic-feedback-finally-comes-to-io
1•dchacke•3m ago•0 comments

$800 Monthly Car Payments Are Hurting Car Sales

https://www.nytimes.com/2026/03/05/business/new-car-sales-payments-affordability.html
1•WarOnPrivacy•5m ago•1 comments

Ladybird browser update (February 2026) [video]

https://www.youtube.com/watch?v=Y3tteHSrJlY
1•todsacerdoti•6m ago•0 comments

AI Is Not Going to Kill Software Engineering

https://deadneurons.substack.com/p/no-ai-is-not-going-to-kill-software
2•nr378•9m ago•0 comments

Shattered Galaxy – a persistent browser MMO RTS

https://shattered-galaxy.pages.dev
1•Phrosen•12m ago•1 comments

Show HN: Msgspec-config, yet another config library for msgspec

https://github.com/maxpareschi/msgspec-config
1•maxpareschi•13m ago•0 comments

Microsoft Is Stress-Testing the Agentic AI Bubble in Its Own Gaming Division

https://softcurrency.substack.com/p/microsoft-is-stress-testing-the-agentic
3•econgradstud•13m ago•2 comments

Android released a new official LLM code-generation benchmark: Android Bench

https://android-developers.googleblog.com/2026/03/elevating-ai-assisted-androi.html
1•zmlatorre•14m ago•0 comments

Trump fires Kristi Noem as DHS secretary

https://www.wsj.com/politics/policy/trump-dhs-kristi-noem-markwayne-mullin-85815862
6•hedayet•18m ago•1 comments

When Fonts Fall

https://www.figma.com/blog/when-fonts-fall/
1•emschwartz•18m ago•0 comments

Code Bonito – Design prompts for vibecoding tools

https://codebonito.com/
1•utshull•19m ago•1 comments

Async Programming Is Just Inject Time

https://willhbr.net/2026/03/02/async-inject-and-effects/
2•todsacerdoti•23m ago•0 comments

Doppelgänger / RRN Disinformation Infrastructure Ecosystem 2026

https://dti.domaintools.com/research/doppelganger-rrn-disinformation-infrastructure-ecosystem
1•nobody9999•25m ago•0 comments

Show HN: A Claude Code skill that renders decisions as interactive HTML pages

https://github.com/jnemargut/better-plan-mode
2•jontomato•29m ago•0 comments

A Modular Robot Dashboard

https://github.com/transitiverobotics/transact
1•chfritz•30m ago•0 comments

Foreman: A secure self-hosted agent orchestrator

https://www.palkeo.com/en/blog/foreman.html
1•palkeo•32m ago•0 comments

Memex(RL): Scaling Long-Horizon LLM Agents via Indexed Experience Memory

https://arxiv.org/abs/2603.04257
1•simonpure•33m ago•0 comments

Generative Linguistics, LLMs, and the Social Nature of Scientific Success

https://arxiv.org/abs/2503.20088
1•3willows•34m ago•0 comments

Economy of the Mughal Empire

https://en.wikipedia.org/wiki/Economy_of_the_Mughal_Empire
2•teleforce•34m ago•0 comments

A standard protocol to handle and discard low-effort, AI-Generated pull requests

https://406.fail/
2•Muhammad523•35m ago•0 comments

The Guy Who Played Barney the Dinosaur Now Runs a Tantric Sex Business

https://www.vice.com/en/article/the-guy-who-played-barney-the-dinosaur-now-runs-a-tantric-sex-bus...
3•Anon84•37m ago•0 comments

Show HN: Check out my new project – SitDeck

https://sitdeck.com
2•danushman•37m ago•1 comments

Story of a Failed Pentest (2018)

https://web.archive.org/web/20181118010006/https://threader.app/thread/1063423110513418240
1•surround•39m ago•0 comments

Roblox launches real-time AI chat rephrasing to filter out banned language

https://techcrunch.com/2026/03/05/roblox-launches-real-time-ai-chat-rephrasing-to-filter-out-bann...
1•SaaSasaurus•41m ago•0 comments

Ask HN: Did you change the site on mobile?

1•kosolam•43m ago•3 comments

The five AI value models driving business reinvention

https://openai.com/index/the-five-ai-value-models-driving-business-reinvention
1•surprisetalk•45m ago•0 comments

SaaSpocalypse: Enterprises are suddenly worried about the future of SaaS

https://www.techcircle.in/2026/02/09/saaspocalypse-explained-why-enterprises-are-suddenly-worried...
1•bigwheels•46m ago•0 comments

FastClaw: Strong and powerfull AI easy to use for new users or pro users

https://fastclaw.live/
1•samhabesha•47m ago•0 comments

Show HN: Tarmac – Know what Claude Code will cost before you run it

https://github.com/CodeSarthak/tarmac
1•sarthakaggarwal•51m ago•1 comments