6
我有一个Nix包,我想捆绑到码头集装箱中。如何用nix建立码头集装箱?
具体而言,我想使用Nix作为Dockerfile
的更具表现力的替代方案,以便更快速地(非线性)构建图像。
我发现了有关dockerTools.buildImage
的文档,但我希望有一个最小的工作示例,并且我也想知道在Docker容器中结束了什么。
我有一个Nix包,我想捆绑到码头集装箱中。如何用nix建立码头集装箱?
具体而言,我想使用Nix作为Dockerfile
的更具表现力的替代方案,以便更快速地(非线性)构建图像。
我发现了有关dockerTools.buildImage
的文档,但我希望有一个最小的工作示例,并且我也想知道在Docker容器中结束了什么。
下面的例子包(使用contents =
)的pkgs.nginx
nixpkgs封装成泊坞窗容器:
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 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。