इस प्रोजेक्ट के बारे में

Baseimage-docker एक Docker बेस इमेज है जो Ubuntu पर बनी है और कंटेनर के अंदर उपयोग के लिए समायोजित की गई है। इसे Docker Hub और GHCR पर `phusion/baseimage` के रूप में प्रकाशित किया जाता है, और यह आपकी स्वयं की इमेज के लिए एक शुरुआती बिंदु के रूप में इरादा किया गया है। यह परियोजना तर्क देती है कि मानक Ubuntu कंटेनर के लिए डिज़ाइन नहीं किया गया है: इसका Upstart init वास्तविक या वर्चुअलाइज़्ड हार्डवेयर मान लेता है, और कंटेनर के कई विशेष मामलों को गलत करना आसान है। Baseimage-docker उन सुधारों और प्रशासन उपकरणों को एक साथ बंडल करता है जिन्हें वह आवश्यक मानता है। इसमें क्या शामिल है: - एक सही init प्रक्रिया, `/sbin/my_init`, जो अनाथ चाइल्ड प्रक्रियां को साफ़ करती है (ज़ॉम्बी संचय से बचती है) और SIGTERM को चाइल्ड को अग्रेषित करती है ताकि वे SIGKILL किए जाने के बजाय ठीक से बंद हो सकें। - Upstart के प्रतिस्थापन के रूप में runit, जिसका उपयोग सेवा पर्यवेक्षण और क्रैश हुए डेमन के स्वचालित पुनः आरंभ के लिए किया जाता है। - syslog-ng, जो केवल स्थानीय रूप से सुनता है और संदेशों को `docker logs` पर अग्रेषित करता है, साथ ही logrotate। - cron, और एक SSH सर्वर जो डिफ़ॉल्ट रूप से अक्षम है और केवल कुंजी प्रमाणीकरण की अनुमति देता है। - `setuser`, जो किसी अन्य उपयोगकर्ता के रूप में सही `$HOME` के सा कमांड चलाने के लिए है, और `install_clean`, जो कैश साफ़ करने वाले apt इंस्टॉल के लिए है। - Docker के साथ APT असंगतताओं के लिए सुधार। उपयोग: `FROM phusion/baseimage:<VERSION>` सेट करें और `CMD ["/sbin/my_init"]`। अतिरिक्त डेमन `/etc/service/<NAME>` के अंतर्गत निष्पादन योग्य `run` स्क्रिप्ट बनाकर जोड़े जाते हैं; runit उन्हें शुरू करता है और बाहर निकलने पर पुनः आरंभ करता है। स्टार्टअप स्क्रिप्ट `/etc/my_init.d` (शब्दकोशीय क्रम में चलाई जाती हैं) या `/etc/rc.local` में रखी जा सकती हैं, और उन्हें कोड 0 के साथ बाहर निकलना चाहिए। `docker run --env` या Dockerfile `ENV` के माध्यम से पारित पर्यावरण चर `my_init` द्वारा `/etc/container_environment` से आयात किए जाते हैं, फिर शेल और JSON प्रारूपों में डंप किए जाते हैं ताकि किसी भी भाषा में सेवाएँ और स्क्रिप्ट मूल मान पढ़ सकें। निर्देशिका डिफ़ॉल्ट रूप से root के स्वामित्व वाली और `docker_env` समूह तक सीमित है क्योंकि मान संवेदनशील हो सकते हैं। चाल्ड को समाप्त करने के लिए टाइमआउट `KILL_PROCESS_TIMEOUT` और `KILL_ALL_PROCESSES_TIMEOUT` के साथ समायोजित किए जा सकते हैं। README बताता है कि इमेज लगभग 8.3 MB RAM लेती है और अपनी ही रूपरेखा में Busybox या Alpine से हल्की है। यह यह भी समाता है कि एक कंटेनर में कई OS प्रक्रियाए चलाना Docker के एकल-तार्किक-सेवा दर्शन के अनुकूल है, और यह परियोजना किसी भी दृष्टिकोण को अनिवार्य नहीं करती। Ubuntu 26.04 LTS GNU Coreutils के बजाय Rust Coreutils भेजता है, जिसे README एक विचारणीय बिंदु के रूप में नोट करता है।