কম্পিউটার টিউটোরিয়াল

লিনাক্সে Podman কন্টেইনারের বিগিনার্স গাইড

ফিউচার অফ টেকনোলজি কথা বললে ভার্চুয়ালাইজেশন ও কন্টেইনারাইজেশন সেটাই পথ। এগুলো অ্যাপ্লিকেশন ও সার্ভিস সিকিউরিটি বাড়ায়, স্ন্যাপশটিং, টেমপ্লেট, কাস্টোমাইজেশন সহজ করে—ওয়ান-সার্ভার-পার-অ্যাপ্লিকেশন মডেলের চেয়ে বেশি ফ্লেক্সিবিলিটি। কিন্তু কীভাবে শুরু করবেন সেটা সবসময় ক্লিয়ার নয়। আমরা লিনাক্স, উইন্ডোজ, 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 কন্টেইনার রিসোর্স লিমিট।

  1. রেগুলার এক্সপ্রেশন (Regex) বिगিনার গাইড

  2. লিনাক্সে ন্যানো (Nano) টেক্সট এডিটর ব্যবহারের বिगিনার গাইড

  3. Android Studio-এর বигিনার গাইড (The Beginner's Guide to Android Studio)

  4. টাচ টাইপিং শেখার Débutant গাইড