Docker की 5 अजीब सच्चाइयाँ

मूल शीर्षक: Docker is weird

यह क्यों महत्वपूर्ण है

Docker की आंतरिक संरचना समझना developers को container security और performance optimization में मदद करती है।

एक डेवलपर ने खुद का container runtime बनाते हुए Docker के बारे में 5 तकनीकी तथ्य उजागर किए — containers असल में Linux kernel की 5 अलग-अलग features का संयोजन हैं, कोई अलग feature नहीं।

codeandcake.dev के एक लेख में डेवलपर ने अपना container runtime बनाने के अनुभव साझा किए। पहली बात: containers कोई real चीज़ नहीं हैं — ये सिर्फ विशेष restrictions वाले Linux processes हैं जो host kernel पर ही चलते हैं और /proc में दिखते हैं। दूसरी बात: containers दरअसल Namespaces, cgroups और network isolation जैसी 5 Linux kernel features का मेल हैं। तीसरी बात: Docker images महज folders हैं जिन्हें chroot या pivot_root से container process की root directory बना दिया जाता है। चौथी बात: Docker का runtime runc Go में लिखा है, लेकिन Go multi-threaded है जबकि कई Linux syscalls single-threaded environment माँगते हैं — इसके लिए runc में एक C module रखा गया जो Go के initialize होने से पहले चलता है। Go में fork भी नहीं है, इसलिए runc एक workaround के तौर पर /proc/self/exe को exec करता है। पाँचवीं बात: Docker daemon आमतौर पर root के रूप में चलता है। Rootless runtime में पूरा networking stack userspace में फिर से बनाना पड़ता है।

स्रोत

codeandcake.dev — मूल लेख पढ़ें →