2017-04-12 11 views
6

मेरे पास एक निक्स पैकेज है जो मैं एक डॉकर कंटेनर में बंडल करना चाहता हूं।निक्स के साथ एक डॉकर कंटेनर कैसे बनाया जाए?

विशेष रूप से, मैं Dockerfile के लिए अधिक स्पष्ट अभिव्यक्ति के रूप में निक्स का उपयोग करना चाहता हूं ताकि तेज (गैर-रैखिक) छवि निर्माण हो सके।

मैं dockerTools.buildImage पर प्रलेखन पाया है, लेकिन मैं एक न्यूनतम काम कर उदाहरण करना चाहते हैं, और मैं यह भी पता है कि डोकर कंटेनर में किया जा रहा समाप्त होता है करना चाहते हैं।

उत्तर

9

निम्न उदाहरण संकुल एक डोकर कंटेनर में (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 एमबी।

संबंधित मुद्दे