diff options
author | Daniël de Kok <me@danieldk.eu> | 2019-06-06 10:39:50 +0200 |
---|---|---|
committer | Daniël de Kok <me@danieldk.eu> | 2019-06-06 15:03:08 +0200 |
commit | 3b0d5b5ed3815d3bf5cf1c85a6c8e17091ba7258 (patch) | |
tree | 3f544ab7cffefb723680a1f124a26e8a7b8be949 | |
parent | 7e6756af41944569fc2d7903ff122b1d56170e21 (diff) | |
download | nixpkgs-3b0d5b5ed3815d3bf5cf1c85a6c8e17091ba7258.tar nixpkgs-3b0d5b5ed3815d3bf5cf1c85a6c8e17091ba7258.tar.gz nixpkgs-3b0d5b5ed3815d3bf5cf1c85a6c8e17091ba7258.tar.bz2 nixpkgs-3b0d5b5ed3815d3bf5cf1c85a6c8e17091ba7258.tar.lz nixpkgs-3b0d5b5ed3815d3bf5cf1c85a6c8e17091ba7258.tar.xz nixpkgs-3b0d5b5ed3815d3bf5cf1c85a6c8e17091ba7258.tar.zst nixpkgs-3b0d5b5ed3815d3bf5cf1c85a6c8e17091ba7258.zip |
nixos/tests/docker-tools: check layer sharing with buildLayeredImage
Adapted from grahamc's blog post on layered Docker images in Nix: https://grahamc.com/blog/nix-and-layered-docker-images
-rw-r--r-- | nixos/tests/docker-tools.nix | 6 | ||||
-rw-r--r-- | pkgs/build-support/docker/examples.nix | 8 |
2 files changed, 14 insertions, 0 deletions
diff --git a/nixos/tests/docker-tools.nix b/nixos/tests/docker-tools.nix index f91121077ea..9ab1a71f331 100644 --- a/nixos/tests/docker-tools.nix +++ b/nixos/tests/docker-tools.nix @@ -68,6 +68,12 @@ import ./make-test.nix ({ pkgs, ... }: { $docker->succeed("docker load --input='${pkgs.dockerTools.examples.layered-on-top}'"); $docker->succeed("docker run --rm ${pkgs.dockerTools.examples.layered-on-top.imageName}"); + # Ensure layers are shared between images + $docker->succeed("docker load --input='${pkgs.dockerTools.examples.another-layered-image}'"); + $docker->succeed("docker inspect ${pkgs.dockerTools.examples.layered-image.imageName} | ${pkgs.jq}/bin/jq -r '.[] | .RootFS.Layers | .[]' | sort > layers1.sha256"); + $docker->succeed("docker inspect ${pkgs.dockerTools.examples.another-layered-image.imageName} | ${pkgs.jq}/bin/jq -r '.[] | .RootFS.Layers | .[]' | sort > layers2.sha256"); + $docker->succeed('[ $(comm -1 -2 layers1.sha256 layers2.sha256 | wc -l) -ne 0 ]'); + # Ensure order of layers is correct $docker->succeed("docker load --input='${pkgs.dockerTools.examples.layersOrder}'"); $docker->succeed("docker run --rm ${pkgs.dockerTools.examples.layersOrder.imageName} cat /tmp/layer1 | grep -q layer1"); diff --git a/pkgs/build-support/docker/examples.nix b/pkgs/build-support/docker/examples.nix index ac21be907b8..29eea33a7e1 100644 --- a/pkgs/build-support/docker/examples.nix +++ b/pkgs/build-support/docker/examples.nix @@ -226,4 +226,12 @@ rec { ''; }; + # 14. Create another layered image, for comparing layers with image 10. + another-layered-image = pkgs.dockerTools.buildLayeredImage { + name = "another-layered-image"; + tag = "latest"; + config.Cmd = [ "${pkgs.hello}/bin/hello" ]; + contents = [ pkgs.hello ]; + }; + } |