c88337c9ac
Docker images used to be, essentially, a linked list of layers. Each layer would have a tarball and a json document pointing to its parent, and the image pointed to the top layer: imageA ----> layerA | v layerB | v layerC The current image spec changed this format to where the Image defined the order and set of layers: imageA ---> layerA |--> layerB `--> layerC For backwards compatibility, docker produces images which follow both specs: layers point to parents, and images also point to the entire list: imageA ---> layerA | | | v |--> layerB | | | v `--> layerC This is nice for tooling which supported the older version and never updated to support the newer format. Our `buildImage` code only supported the old version, so in order for `buildImage` to properly generate an image based on another image with `fromImage`, the parent image's layers must fully support the old mechanism. This is not a problem in general, but is a problem with `buildLayeredImage`. `buildLayeredImage` creates images with newer image spec, because individual store paths don't have a guaranteed parent layer. Including a specific parent ID in the layer's json makes the output less likely to cache hit when published or pulled. This means until now, `buildLayeredImage` could not be the input to `buildImage`. The changes in this PR change `buildImage` to only use the layer's manifest when locating parent IDs. This does break buildImage on extremely old Docker images, though I do wonder how many of these exist. This work has been sponsored by Target. |
||
---|---|---|
.. | ||
agda | ||
bintools-wrapper | ||
build-bazel-package | ||
build-dotnet-package | ||
build-fhs-userenv | ||
build-setupcfg | ||
buildenv | ||
cc-wrapper | ||
docker | ||
dotnetbuildhelpers | ||
dotnetenv | ||
emacs | ||
expand-response-params | ||
fetchbower | ||
fetchbzr | ||
fetchcvs | ||
fetchdarcs | ||
fetchdocker | ||
fetchegg | ||
fetchfossil | ||
fetchgit | ||
fetchgitlocal | ||
fetchgx | ||
fetchhg | ||
fetchipfs | ||
fetchmavenartifact | ||
fetchmtn | ||
fetchnuget | ||
fetchpatch | ||
fetchrepoproject | ||
fetchs3 | ||
fetchsvn | ||
fetchsvnrevision | ||
fetchsvnssh | ||
fetchurl | ||
fetchzip | ||
icon-conv-tools | ||
kernel | ||
libredirect | ||
make-desktopitem | ||
make-startupitem | ||
make-symlinks | ||
mkshell | ||
mono-dll-fixer | ||
nix-prefetch-github | ||
nuke-references | ||
ocaml | ||
references-by-popularity | ||
release | ||
remove-references-to | ||
rust | ||
setup-hooks | ||
singularity-tools | ||
skaware | ||
src-only | ||
substitute | ||
substitute-files | ||
templaterpm | ||
upstream-updater | ||
vm | ||
wrapper-common | ||
writers | ||
build-maven.nix | ||
build-pecl.nix | ||
closure-info.nix | ||
dhall-to-nix.nix | ||
plugins.nix | ||
replace-dependency.nix | ||
setup-systemd-units.nix | ||
source-from-head-fun.nix | ||
trivial-builders.nix |