如何用nixbuild立一个docker容器?

我有一个Nix包,我想捆绑成一个docker集装箱。

具体来说,我想使用Nix作为一个Dockerfile更具有performance力的替代scheme,以更快(非线性)的图像构build。

我已经find了dockerTools.buildImage文档,但我想有一个最小的工作示例,我也想知道什么最终在docker集装箱。

以下示例将pkgs.nginx nixpkgs包打包到docker容器中(使用contents = ):

 docker load --input $(nix-build -E 'with import <nixpkgs> {}; pkgs.dockerTools.buildImage { name = "nix-htop"; contents = pkgs.htop; config = { Cmd = [ "/bin/htop" ]; }; }') 

你可以运行它

 docker run -it nix-htop 

容器的内容非常小,只有一个Docker层:

 docker save nix-htop | tar x --to-stdout --wildcards '*/layer.tar' | tar t --exclude="*/*/*/*" ./ ./bin/ ./bin/htop ./share/ ./share/applications/ ./share/man/ ./share/pixmaps/ nix/ nix/store/ nix/store/gi5vvbjawzw1bakiksazbd50bvfmpmmc-ncurses-6.0/ nix/store/pa5nkrpd5hg5qp1dc4gmbd2vdhn1y3x2-htop-2.0.2/ nix/store/vn6fkjnfps37wa82ri4mwszwvnnan6sk-glibc-2.25/ 

只有htop和它的依赖关系(glibc,ncurses),在我的情况下是26 MB。