Documentation/image-fetching-behavior.md
When fetching, rkt will try to avoid unnecessary network transfers: if an updated image is already in the local store there's no need to download it again.
This behavior can be controlled with the --pull-policy flag.
The following table describes the meaning of the --pull-policy flag.
This flag accepts one of three options:
| Option | Description |
|---|---|
new | Default behavior in run and prepare Check the store, and if the image is missing fetch from remote |
update | Default behavior in fetch Attempt to fetch from remote, but if the remote image matches something in our store don't pull it |
never | Only check the store, and don't fetch from remote. |
Here we detail the actions taken by rkt when fetching from store and remote for each type of image argument.
| Fetch from | Image argument | Detailed behavior |
|---|---|---|
| store | file:// | Use the specified file |
| store | http(s):// | Check for the URL in the local store. If found, use the corresponding image. |
| store | docker:// | Check for the URL in the local store. If found, use the corresponding image. |
| store | image name | Check local store. If found, use that image. If there's a file in the current directory named like the image name, use that file instead. |
| remote | file:// | Use the specified file |
| remote | http(s):// | Search in the store if the URL is available. If it's available and the saved Cache-Control maxage > 0 determine if the image should be downloaded. If it's not expired use the image. Otherwise download (sending if available the saved ETag). If the download returns a 304 Not Modified use the image already saved in the local store. |
| remote | docker:// | Fetch using docker2aci. |
| remote | image name | Execute discovery logic. If discovery is successful use the discovered URL doing the above remote http(s):// image case. If there's a file in the current directory named like the image name, use that file instead. |