ফিউচার অফ টেকনোলজি কথা বললে ভার্চুয়ালাইজেশন ও কন্টেইনারাইজেশন সেটাই পথ। এগুলো অ্যাপ্লিকেশন ও সার্ভিস সিকিউরিটি বাড়ায়, স্ন্যাপশটিং, টেমপ্লেট, কাস্টোমাইজেশন সহজ করে—ওয়ান-সার্ভার-পার-অ্যাপ্লিকেশন মডেলের চেয়ে বেশি ফ্লেক্সিবিলিটি। কিন্তু কীভাবে শুরু করবেন সেটা সবসময় ক্লিয়ার নয়। আমরা লিনাক্স, উইন্ডোজ, macOS-এ ভার্চুয়ালাইজেশন কভার করেছি, কিন্তু কন্টেইনারাইজেশন একটু আলাদা। এই আর্টিকেলে লিনাক্সে Podman বিগিনার্স গাইড দিচ্ছি—কন্টেইনারাইজেশনের জন্য চমৎকার টুল।
কন্টেইনার কী?
কন্টেইনার এসেনশিয়ালি ছোট ভার্চুয়াল মেশিন—শুধু অ্যাপ্লিকেশনের জন্য। ভিএমের কনসেপ্ট, সিকিউরিটি, ইজ-অফ-ইউজ ফিচার ক্যারি করে, কিন্তু ছোট এবং অ্যাপ্লিকেশন ইমেজিং ও ডিস্ট্রিবিউশন সহজ করে। Flatpak ও Snap-এর বেসিস এখানেই। এক প্রোগ্রাম, একাধিক আইসোলেটেড এনভায়রনমেন্টে রান হওয়া অ্যাপ্লিকেশন—প্যারালেল দেখা যাচ্ছে।
Podman কী?
Docker কন্টেইনার ইঞ্জিনের ওজি (OG) হিসেবে পরিচিত। Podman সিমিলার কন্টেইনার ইঞ্জিন Docker-র স্ট্রাকচারের মত, কিন্তু কয়েকটি কী ডিফারেন্স।
- Podman daemonless, Docker ডিমনে ডিপেন্ড করে। অর্থাৎ Podman কন্টেইনার রুট-লেভেল পারমিশন ছাড়া চলে—মোর সিকিউরিটি ও ফ্লেক্সিবিলিটি। ইউজার-লেভেল কন্টেইনার মানে ইউজার শুধু নিজের কন্টেইনার দেখে, অন্যের নয়। সিম্পলার আর্কিটেকচারের জন্য Podman সিস্টেম রিসোর্সে লাইটওয়েট—বেটার এক্সপেরিয়েন্স।
- Daemonless আর্কিটেকচার rootless containers কনসেপ্টে লিড করে। সিকিউরিটি ফোকাসড। অ্যাটাকার কন্টেইনার কমপ্রোমাইজ করে এস্কেপ করলেও রুট পারমিশন নয়, বেসিক ইউজার পারমিশন পাবে। এডিশনাল সেটআপ লাগে, কিছু লিমিটেশন আছে, কিন্তু দেখার যোগ্য।
Podman ইনস্টলেশন
অধিকাংশ ডিস্ট্রোতে Podman মেইন রিপোতে আছে—সিম্পল ইনস্টল কমান্ড:
# Debian/Ubuntu sudo apt install podman # Fedora/CentOS/Redhat sudo dnf install podman # Arch Linux sudo pacman -S podman # OpenSUSE sudo zypper install podman # Gentoo sudo emerge app-emulation/podman
Podman ব্যবহার
Podman কন্টেইনার стар্ট করার কমান্ড সিনট্যাক্স একটু কনফিউজিং, لكن 패턴 রিকগনাইজ করলে সহজ হয়। প্রজেক্টের স্যাম্পল কন্টেইনার রান করুন:
podman run -dt -p 8080:8080/tcp -e HTTPD_VAR_RUN=/run/httpd -e HTTPD_MAIN_CONF_D_PATH=/etc/httpd/conf.d \ -e HTTPD_MAIN_CONF_PATH=/etc/httpd/conf \ -e HTTPD_CONTAINER_SCRIPTS_PATH=/usr/share/container-scripts/httpd/ \ registry.fedoraproject.org/f29/httpd /usr/bin/run-httpd
রেজিস্ট্রি থেকে ইমেজ পুল হবে, শেষে একটা লং নাম্বার আসবে। podman ps দিয়ে রানিং কন্টেইনার চেক করলে সেটা দেখবেন।
podman ps
Apache যা সার্ভ করছে ওয়েবপেজ দেখতে:
curl https://0.0.0.0:8080
0.0.0.0 রিপ্লেস করুন podman ps-র IP দিয়ে। গারবেল HTML আসবে, কিন্তু টপে HTML টাইটেল সিনট্যাক্স দেখলে বুঝবেন কাজ করছে:
Test Page for the Apache HTTP Server on Fedora
Podman Images
Podman-র ভালো সাইড: ইমেজ সার্চ। httpd বা অন্য প্রোগ্রাম সার্চ:
podman search CONTAINERNAME
vncserver সার্চ করলাম—অনেক অপশন, পার্সনাল প্রেফারেন্সের উপর।
ইমেজ পুল করতে:
podman pull CONTAINERNAME
ফুল URL ইউজ করা রিকমেন্ডেড (আক্যুরেট নিশ্চিত করতে)। উদাহরণ:
podman pull docker.io/michaelaboeckler/vncserver
শুধু podman pull vncserver দিলে অনিচ্ছাকামনা ইমেজ পিক হতে পারে।
ইমেজ চেক: podman images
কন্টেইনার স্টপ: podman stop -l (লেটেস্ট), podman stop -a (সকল)।
Podman docker.io-র ইমেজও ইউজ করতে পারে—কারণ Podman ও Docker কমান্ড এসেনশিয়ালি সেম। তাই alias docker='podman' রিকমেন্ড করা হয়—docker টাইপ করলে podman রান হবে।
Rootless Podman
রুটলেস কন্টেইনার সেটআপে কিছু সেটআপ লাগে, কিন্তু তাদের GitHub-এ চমৎকার ডকুমেন্টেশন আছে।
Podman প্রাইমার পছন্দ হলে অন্যান্য কন্টেইনার কন্টেন্ট দেখুন: ChromeOS-এ উবুন্টু কন্টেইনার, Docker কন্টেইনার অন্য হোস্টে কপি, Docker কন্টেইনার রিসোর্স লিমিট।