Docker को सीधे FreeBSD में पोर्ट किया जा सकता है, लेकिन...

6 min

language: ja bn en es hi pt ru zh-cn zh-tw

नमस्ते, मैं अक्षम हूँ।

मेरे होम सर्वर की रहस्यमय अचानक मौत की बीमारी अभी भी हल नहीं हुई है, और ConoHa के VPS के डाउन होने और ConoHa के DNS सर्वर के भी बंद होने के कारण, यह कुछ समय के लिए डाउन था।

सबसे पहले

सबसे पहले, यह कहने की आवश्यकता नहीं है कि आज का Docker मूल रूप सेjail से अधिक एप्लिकेशन-अनुकूल तरीके से विकसित हुआ है।
chroot केवलchange root है, और यह एक ऐसा वातावरण है जिस पर फ़ाइल सिस्टम स्तर के प्रतिबंध लगाए गए हैं। एक अर्थ में, इसे जेल कहा जा सकता है, लेकिन यह थोड़ा अलग है। केवलroot,/ बदलता है।
एक सुविधाजनक और समझने योग्य उपकरण के रूप में,arch-chroot है, लेकिन आइए एक सामान्यchroot का प्रयास करें।

thepassenger:[haturatu]:~$ sudo chroot chroot-test/
chroot: failed to run command ‘/usr/bin/bash’: No such file or directory

इस तरह, डिफ़ॉल्टchroot के साथ,bash ही उस अलग-थलग वातावरण से दिखाई नहीं देता है, इसलिए आप इसमें प्रवेश नहीं कर सकते। और भले ही आप/bin/bash को कॉपी कर लें,bash को आवश्यक निर्भरता लाइब्रेरीज़ उस अलग-थलग वातावरण से संदर्भित नहीं की जा सकती हैं, इसलिए इसे निष्पादित नहीं किया जा सकता है।
यहChange Root है। केवल रूट बदलता है।

sudo mkdir /mnt/arch
sudo pacstrap /mnt/arch base linux linux-firmware man-db vim
sudo arch-chroot /mnt/arch

केवल उपरोक्त के साथ

thepassenger:[haturatu]:~$ sudo arch-chroot /mnt/arch
==> WARNING: /mnt/arch is not a mountpoint. This may have undesirable side effects.
[thepassenger /]# ls
bin   dev  home  lib64  opt   root  sbin  sys  usr
boot  etc  lib   mnt    proc  run   srv   tmp  var
[thepassenger /]# cd ~
[thepassenger ~]# ls
[thepassenger ~]# ls -la
total 16
drwxr-x---  4 root root 4096 Mar 31 11:37 .
drwxr-xr-x 16 root root 4096 Mar 31 11:37 ..
drwx------  3 root root 4096 Mar 31 11:37 .gnupg
drwx------  2 root root 4096 Mar 31 11:37 .ssh
[thepassenger ~]# 

इसके बाद, यदि आप इसchroot वातावरण मेंps -ef चलाते हैं, तो आप देखेंगे कि होस्ट मशीन की प्रक्रियाएँ इसchroot से दिखाई देती हैं।

FreeBSD केjail के मामले में, यह और भी मजबूत होता है, और प्रक्रियाएँ, नेटवर्क और उपयोगकर्ता स्थान भी अलग हो जाते हैं। इसके अलावा,Linux मेंcgroups को Google के इंजीनियरों द्वारा डिज़ाइन और कार्यान्वित किया गया था, और यहcgroups v2 तक विकसित हुआ है। मेरेDocker का उपयोग करने का कारण केवल आसानी से बदली जा सकने वाली संसाधन सीमाओं के अलावा अन्य उद्देश्यों के लिए है, औरjail भी ठीक रहेगा, लेकिन मैं इस भूलभुलैया में हूँ किFreeBSD में ऐसा ही कार्यान्वयन क्यों नहीं किया गया है_____ क्याjail में संसाधन सीमाएँ नहीं लगाई जा सकतीं? नहीं, वे लगाई जा सकती हैं, लेकिन क्यों...

FreeBSD में Docker की वर्तमान स्थिति

यह अभी भी समर्थित है, लेकिन यह आश्चर्यजनक रूप से पुराना है।

image.png


इसका मतलब यह है कि यह समर्थित तो है, लेकिन
हालिया FreeBSD कंटेनर स्थिति #Docker - Qiita
इस लेख के अनुसार, ऐसा लगता है कि इसे अब बनाए नहीं रखा जा रहा है।
इसके अलावा, FreeBSD के लिए Docker का यह संस्करण वास्तव में Linux कर्नेल के माध्यम से Docker चला रहा है और यह एक मूल कार्यान्वयन नहीं लगता है।

क्या FreeBSD में यह संभव नहीं है?

ईमानदारी से कहूँ तो, यदिalias को बदलकरDocker के साथ पूरी तरह से संगतjail जेल वातावरण बनाया जा सके, तो यह सबसे अच्छा होगा।
संसाधन सीमाएँ भीrctl के साथ मिलकर लगाई जा सकती हैं।
https://codeberg.org/bsdpot/pot

ऐसे भी हैं जोjail का उपयोग करते हैं, लेकिन एक अर्थ में, यहFreeBSD पारिस्थितिकी तंत्र के भीतर एक कार्यान्वयन है।
यानी, इसे एक कंटेनर वातावरण के रूप में लागू किया जा सकता है। हालांकि, पोर्टिंग की समस्याDockerfile जैसी बिल्ड स्क्रिप्ट है। यदि आप इसेpot के साथ लागू करने योग्य बिल्ड शेल स्क्रिप्ट में आसानी से परिवर्तित कर सकते हैं, तो आप कर सकते हैं, लेकिन

FROM
WORKDIR
COPY
ARG
ENV
RUN
EXPOSE 

यह एक बिल्ड भाषा (?) है जो एक लेयर सिस्टम पर अपरिहार्य है।
इसका मतलब है कि चूंकि इनके पैकेज मैनेजर भी अलग हैं, इसलिए इन्हें पूरी तरह से स्वचालित रूप से परिवर्तित करना थोड़ा मुश्किल लगता है। ऐसा लगता है किpotfile के साथ इसका समर्थन किया जा सकता है।

https://github.com/ebarriosjr/potMachine/blob/master/Potfiles/Potfile

Related Posts