containers/podman

[docs] Distinguish between lazy pulling and partial pulling

クローズ

#24,947 opened on 2025/01/06

 (10 件のコメント) (1 件のリアクション) (0 人の担当者)Go (3,107 件のフォーク)batch import
ContribfestGood First Issuedocumentationvolunteers-wanted

Repository metrics

Stars
 (31,686 個のスター)
PR merge metrics
 (30d に merged PR はありません)

説明

Currently "partial pulling" and "lazy pulling" are used interchangeably, e.g. here:

https://github.com/containers/podman/blob/e79686ee12eb64bd296625b6a55381554d4080cc/docs/tutorials/performance.md#lazy-pulling-of-container-images

Lazy pulling of container images

Podman supports lazy pulling for the following container image formats:

  • zstd:chunked
  • eStargz

zstd:chunked has better performance than eStargz.

See the article Pull container images faster with partial pulls by Giuseppe Scrivano and Dan Walsh.

However, the wider container ecosystem seems to use these 2 terms for 2 different things. Partial pulling means the tool doesn't need to download chunks it already downloaded before (chunk cache is reused between pulls). Lazy pulling means the container can be started before it finishes downloading, and its chunks will be downloaded on-demand.

As far as I know, podman supports "partial pulling", but not "lazy pulling". I.e. the image download process does not need to download all the data from scratch, but it still needs to finish before a container can be started. Am I right?

Meanwhile containerd (nerdctl) supports "lazy pulling", but doesn't mention anything about "partial pulling" (as in: cache reuse between downloads). So it can start a container having downloaded only the files the image needs (nice), but if two different images share the same files, it will (probably) still end up downloading these files twice.

If my reasoning is correct, can we document this better?


By the way: calling cache reuse "partial pulling" is a bit unfortunate here, since by the sound of it, "lazy pulling" should be partial (it only downloads parts of the images that are used), but with current meaning of these 2 phrases, it's not. Maybe we need another name for "partial pulling", like "pulling with chunk-level cache"?

コントリビューターガイド