Skip to content

Instantly share code, notes, and snippets.

@jeremiehuchet
Created April 25, 2020 21:40
Show Gist options
  • Select an option

  • Save jeremiehuchet/d71d5de5d2a28215f378f5125bfe972f to your computer and use it in GitHub Desktop.

Select an option

Save jeremiehuchet/d71d5de5d2a28215f378f5125bfe972f to your computer and use it in GitHub Desktop.
nix function to fetch docker image content
{ pkgs }:
{
# fetch docker image content and return path in nix store
# inspired from https://github.com/NixOS/nixpkgs/blob/6dab1b50a63fa6e9dfb9bd9eddd3f5d5c7b055ef/pkgs/build-support/docker/default.nix#L264
fetchDocker = coordinates:
let
name = "${coordinates.finalImageName}-${coordinates.finalImageTag}";
result = pkgs.dockerTools.runWithOverlay {
name = "docker-exporter-${name}";
diskSize = 512;
fromImage = pkgs.dockerTools.pullImage coordinates;
postMount = ''
touch $out/json $out/VERSION
tar -C mnt --hard-dereference --sort=name --mtime="@$SOURCE_DATE_EPOCH" -cf $out/layer.tar .
'';
};
in pkgs.runCommandLocal "docker-export-${name}" { } ''
mkdir $out
tar -C $out -xf ${result}/layer.tar
'';
}
@mped-oticon
Copy link

/scratch/bocker2 via ❄️  impure (shell) took 17s 
❯ cat pkg_debian_docker.nix 
{ pkgs ? import <nixpkgs> {} }:

# Fetch from dockerhub via skopeo
pkgs.dockerTools.pullImage {
  # https://hub.docker.com/layers/library/debian/stable-20240812-slim/images/sha256-90128f59a7c6f6fdcb6493f587ea352d5c7507f52a6ddfba66fc56cd3d99dc2b
  imageName = "debian";
  finalImageTag = "stable-20240812-slim";
  imageDigest = "sha256:382967fd7c35a0899ca3146b0b73d0791478fba2f71020c7aa8c27e3a4f26672";

  # Extracted
  sha256 = "1grfplg28bw9kpgz733chf15l5k0h6f24crnhrcpqbxm6hzicgny";
}



/scratch/bocker2 via ❄️  impure (shell) 
❯ nix-build pkg_debian_docker.nix 
/nix/store/fxf7xprcq4rmq81mf07i5nq24wrmpnzb-docker-image-debian-stable-20240812-slim.tar


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment