ডকার সরাসরি ফ্রিবিএসডিতে পোর্ট করা যেতে পারে বলে মনে হচ্ছে, কিন্তু...

6 min

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

নমস্কার, আমি অযোগ্য।

আমার হোম সার্ভারের রহস্যময় আকস্মিক মৃত্যুর রোগ এখনও সমাধান হয়নি, এবং ConoHa-এর VPS ডাউন হয়ে গিয়েছিল এবং ConoHa-এর DNS সার্ভারও বন্ধ হয়ে গিয়েছিল, তাই এটি কিছু সময়ের জন্য ডাউন ছিল।

প্রথমত

প্রথমত, এটা বলার অপেক্ষা রাখে না যে বর্তমান ডকার হল 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-তে ডকারের বর্তমান অবস্থা

এটি এখনও সমর্থিত, তবে এটি আশ্চর্যজনকভাবে পুরানো।

image.png


এর মানে হল যে এটি সমর্থিত, কিন্তু
সাম্প্রতিক FreeBSD কন্টেইনার পরিস্থিতি #Docker - Qiita
এই নিবন্ধ অনুসারে, এটি এখন রক্ষণাবেক্ষণ করা হচ্ছে না বলে মনে হচ্ছে।
এবং, FreeBSD-এর এই ডকার সংস্করণটি মূলত লিনাক্স কার্নেলের মাধ্যমে ডকার চালাচ্ছে এবং এটি নেটিভ বাস্তবায়ন নয় বলে মনে হচ্ছে।

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