मैं डॉकर के लिए अपनी आधार छवि कैसे बना सकता हूं?


97

डॉकर डॉक्यूमेंटेशन के अनुसार , अपनी स्वयं की छवि बनाने के लिए, आपको हमेशा FROMनिर्देश का उपयोग करके बेस इमेज को निर्दिष्ट करना होगा ।

जाहिर है, डॉकर इंडेक्स में चुनने के लिए बहुत सारी छवियां हैं , लेकिन क्या होगा अगर मैं अपना खुद का निर्माण करना चाहता हूं? क्या यह संभव है?

छवि baseउबंटू से दूर है अगर मैं सही ढंग से समझता हूं, और मैं एक डेबियन छवि के साथ प्रयोग करना चाहता हूं। इसके अलावा, मैं वास्तव में समझना चाहता हूं कि डॉकर कैसे काम करता है, और baseछवि अभी भी मेरे लिए ब्लैकबॉक्स है।


संपादित करें: आधार छवि बनाने पर आधिकारिक प्रलेखन


कोई बात नहीं। :-) यहाँ प्रश्न अभी भी साइट के दिशा निर्देशों के अनुसार विषय पर होना है। वे सहायता केंद्र और दौरे के पन्नों पर शामिल हैं। (वहाँ लिंक भी डॉकटर कंटेनरों के डेवलपर्स से संबंधित लगता है।) यदि आप अपनी कंटेनर छवि के बारे में पूछ रहे हैं, तो उनकी साइट पर इसके
केन व्हाइट

@ केनव्हीट: प्रासंगिक मेटा प्रश्न: meta.stackexchange.com/questions/179249/…
19

:-) समय के इस बिंदु पर प्रासंगिक मेटा उत्तर , जो कि आपके ठीक ऊपर का उत्तर है। (विशेष रूप से मेरे द्वारा पूछे गए उत्तर की दूसरी टिप्पणी देखें, कि आपका प्रश्न क्या है इसकी स्पष्टता के बारे में।)
केन व्हाइट

9
@ केन व्हाइट: सवाल यह है कि आधार छवि को 'कैसे' बनाया जाए, न कि 'छवि' को कैसे तैनात किया जाए। फ्लिम कुछ ऐसा प्रोग्राम करने की कोशिश कर रहा है जिसे बाद में, उसके द्वारा या दूसरों के द्वारा तैनात किया जा सके। Amazon EC2 परिनियोजन से संबंधित है, लेकिन मुझे लगता है कि उनके पास अभी भी प्रोग्रामर प्रोग्रामिंग प्रोग्राम के कुछ जोड़े हैं सामान :)। आधार चित्र बनाना मैं प्रोग्राम सामग्री का एक उदाहरण है जो मैं कहूंगा।
क्यूकिजर

@qkrijger: लिंक किए गए मेटा प्रश्न में इस पर चर्चा की जा रही है। चूँकि वह चर्चा खुली है, कृपया वहाँ की सामयिकता की कोई चर्चा पोस्ट करें (जहाँ सर्वसम्मति से लगता है कि यह "प्रोग्रामी स्टफ" विषय नहीं है)।
केन व्हाइट

जवाबों:


38

आप देख सकते हैं कि आधार चित्र कैसे बनाए जाते हैं और वहां से जाते हैं।

आप उन्हें यहां पा सकते हैं: https://github.com/dotcloud/docker/tree/master/contrib । Mkimage-busybox.sh, mkimage-unittest.sh, mkimage-debian.sh है


1
Mkimage- * लिपियों स्थानांतरित कर दिया गया है और नाम दिया (के रूप में आधिकारिक रेपो है) करने के लिए यहाँ
tsalaroth

32

सुलैमान हाइक्स का हवाला देते हुए :

आप "docker import" के साथ किसी भी टैरबॉल से आसानी से एक नया कंटेनर बना सकते हैं। उदाहरण के लिए:

debootstrap raring ./rootfs
tar -C ./rootfs -c . | docker import - flimm/mybase

शायद एक टिप्पणी में संपादित करें / अपडेट पोस्ट करें ताकि अन्य इसे देख सकें और शायद कोई व्यक्ति संपादन को फिर से प्रस्तुत कर सके।
Bdoserror

1
@ इस मामले में मुझे sudo का उपयोग करने की आवश्यकता क्यों होगी? इन आदेशों को अपनी उपयोगकर्ता निर्देशिका में चलाएं और आपके पास विशेषाधिकार उत्थान का कोई कारण नहीं होना चाहिए। आप एक छवि बना रहे हैं, इसे स्थापित नहीं कर रहे हैं।
रैंकिडफिशब्रेथ

न ही आपको सामान्य डॉकर के उपयोग के लिए रूट की भी आवश्यकता है; बस अपने आप को dockerसमूह में जोड़ें ।
टेकनकोलागी

1
लेकिन फ़्लिम द्वारा अनुशंसित आयात कमांड में हाइफ़न आवश्यक है: docker import - flimm/mybaseइसके बजायdocker import flimm/mybase
डैनियल एल्डर

टार में फ़ाइलों का स्वामित्व प्रभावित होगा कि आप रूट के रूप में चल रहे हैं या नहीं। यदि नहीं रूट के रूप में, तो debootstrapऔर tarकम से कम के तहत चलाने की जानी चाहिए fakeroot
क्लैक

21

(fatherlinux को ऋण) से जानकारी प्राप्त करें http://developerblog.redhat.com/2014/05/15/practical-introduction-to-docker-containers/ है, जो बेहतर बताते हैं

  1. अपने फाइल सिस्टम के लिए टार फाइल्स बनाएं, बस हो सकता है

    tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos6-base.tar /
    
  2. टार फ़ाइल को अन्य डॉकटर सिस्टम में स्थानांतरित करें यदि स्थानीय रूप से स्थापित नहीं है और importयह

    cat centos6-base.tar | docker import - centos6-base
    
  3. अब आप इसे चलाकर सत्यापित कर सकते हैं।

    docker run -i -t centos6-base cat /etc/redhat-release
    

डॉटक्लाउड की स्क्रिप्ट पहले दो चरणों को एक साथ जोड़ती है जो मुझे भ्रमित करती है और शुरुआत में जटिल लगती है।

डॉक आधिकारिक दिशानिर्देश का उपयोग करके debootstrapस्वच्छ फ़ाइल सिस्टम बनाने की कोशिश करता है।

आप अपने आप को जज कर सकते हैं कि चरण 1 कैसे करें।


14

खरोंच से अपनी खुद की छवि का निर्माण शुरू करने के लिए, आप scratchछवि का उपयोग कर सकते हैं ।

स्क्रैच "छवि" का निर्माण करने की प्रक्रिया का संकेत है कि आप अपनी छवि में पहली फाइलसिस्टम परत के लिए डॉकरफाइल में अगला कमांड चाहते हैं।

FROM scratch
ADD hello /
CMD ["/hello"]

http://docs.docker.com/engine/articles/baseimages/#creating-a-simple-base-image-using-scratch


1
importटार फाइल से यह प्लस दो विहित उत्तर हैं, और यह लिंक विहित संसाधन है।
क्लैक

7

यदि आप अपनी स्वयं की आधार छवि बनाना चाहते हैं, तो मैं सबसे पहले आधिकारिक छवियों पर एक नज़र डालूंगा , विशेष रूप से stackbrewउस रेपो के अंदर।

अन्यथा डॉकटर रेपो में न्यूनतम ओएस छवियों के लिए कुछ महान संदर्भ हैं ।

उदाहरण के लिए यहां एक न्यूनतम आर्क छवि बनाने के लिए एक स्क्रिप्ट है और यहां अधिक हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.