conference logo

Playlist "Gulaschprogrammiernacht 24"

Popping podman/dockers bonnet: Unraveling the image pull process while developing for Forgejo

Erik

Developing an OCI image pull through cache for Forgejo had some interesting rabbit holes and it was surprisingly hard to get in depth information on a supposedly well known system. So I got to deep dive and do bits of research and reverse engineering to make the parts communicate properly.

In this talk I'll share my insights into the process of pulling OCI images according to the distribution spec (and its slight deviations) and try to answer questions like:
- Which requests are sent by Podman or the Docker daemon when doing `docker pull image`?
- Whats that with the /v2 endpoint and discovery?
- How about authentication?
- What does the pull sequence look like?
- Help, I got an index manifest, what should I do?
- How should Forgejo communicate with the daemon for a successful pull?

If there is time, I'll also share small pieces of knowledge of where the implementation sits in the Forgejo codebase and how it interacts with the existing package registry.

- PR containing the implementation: https://codeberg.org/forgejo/forgejo/pulls/11611

Licensed to the public under https://creativecommons.org/licenses/by/4.0/