जब प्रौद्योगिकी के भविष्य के बारे में बात करते हैं, तो कई अनुभवी टेक जानते हैं कि वर्चुअलाइजेशन और कंटेनराइजेशन बहुत अधिक वही रास्ता है। वे एप्लिकेशन और सेवा सुरक्षा को अधिक अनुमति देते हैं, और उन्हें अन्य सेवाओं के माध्यम से आसानी से प्रबंधित किया जाता है जो स्नैपशॉटिंग, टेम्प्लेट, और वन-सर्वर-पर-एप्लिकेशन मॉडल की तुलना में अधिक अनुकूलन की अनुमति देते हैं। हालांकि, यह हमेशा पूरी तरह से स्पष्ट नहीं होता कि आपको वर्चुअलाइजेशन और कंटेनराइजेशन के साथ कैसे शुरुआत करनी चाहिए। हमने पहले Linux, Windows, और macOS पर वर्चुअलाइजेशन को कई बार कवर किया है, लेकिन कंटेनराइजेशन थोड़ा अलग जानवर होता है। हम इस लेख में आपको Linux पर Podman के लिए एक शुरुआती गाइड प्रदान कर रहे हैं, कंटेनराइजेशन के लिए एक शानदार टूल।
कंटेनर क्या हैं?
कंटेनर अनिवार्य रूप से छोटे वर्चुअल मशीन हैं - लेकिन सिर्फ एप्लिकेशन के लिए। वे बहुत सारी समान अवधारणाओं का उपयोग करते हैं और बहुत सी समान सुरक्षा और उपयोग में आसानी की विशेषताओं को ले जाते हैं, लेकिन वे बहुत छोटे होते हैं और एप्लिकेशन की आसान इमेजिंग और वितरण की अनुमति देते हैं। यह बहुत कुछ है जिस पर Flatpaks और Snaps आधारित हैं। आप समानताएं देखना शुरू कर सकते हैं: एक प्रोग्राम, कई एप्लिकेशन जो आइसोलेटेड वातावरण में चलते हैं।
Podman क्या है?
हम में से कई ने Docker, कंटेनर इंजन के OG के बारे में सुना है। Podman एक समान कंटेनर इंजन है जो Docker के समान संरचना का उपयोग करता है लेकिन कुछ प्रमुख अंतरों के साथ।
एक यह है कि Podman डेमॉनलेस है, जबकि Docker एक डेमॉन पर निर्भर करता है। इसका मतलब है कि Podman कंटेनर रूट-लेवल अनुमतियों के बिना काम कर सकते हैं, जिससे अधिक सुरक्षा और लचीलापन मिलता है। उपयोगकर्ता स्तर पर चलने वाला एक कंटेनर का अर्थ है कि उपयोगकर्ता केवल अपने कंटेनर देख सकते हैं और किसी और के नहीं। Podman सरल आर्किटेक्चर के कारण सिस्टम संसाधनों पर हल्का है, जो अधिक सुखद अनुभव के लिए बनाता है।
डेमॉनलेस आर्किटेक्चर रूटलेस कंटेनर नामक किसी चीज़ की ओर ले जाता है। यह एक अवधारणा है जो पिछले अंतर पर बनती है लेकिन सुरक्षा पर केंद्रित है। यदि कोई हमलावर आपके कंटेनर से समझौता करता है और किसी भी कारण से बच निकलता है, तो उनके पास रूट अनुमतियों के बजाय केवल बुनियादी उपयोगकर्ता अनुमतियां होंगी। इसके लिए कुछ अतिरिक्त सेटअप की आवश्यकता होती है, और फिलहाल कुछ कमियां हैं, लेकिन यह कुछ ऐसा है जो देखने लायक है।
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 कंटेनर की जांच करने के लिए, निम्न कमांड दर्ज करें:
podman ps
आपको वह कंटेनर दिखाई देगा जिसे आपने पहले शुरू किया था। यह पुष्टि करता है कि यह चल रहा है। हालांकि, यदि आप विशेष रूप से उस वेबपेज को देखना चाहते हैं जो Apache चला रहा है, तो आप निम्न कमांड चलाएंगे:
curl https://0.0.0.0:8080
0.0.0.0 को उस IP पते से बदलें जो podman ps चलाने पर दिखाया गया था। आपको बहुत सारा गड़बड़ HTML मिलना चाहिए, लेकिन यदि आप शीर्ष पर देखते हैं, तो आप HTML में शीर्षक के लिए सिंटैक्स देखेंगे और जानेंगे कि यह काम कर रहा है।
<title>Test Page for the Apache HTTP Server on Fedora</title>
Podman इमेज
Podman के बारे में अच्छी चीजों में से एक इमेज का उपयोग करना है। आप httpd या अन्य प्रोग्राम जैसे अन्य इमेज खोज सकते हैं जिन्हें आप चलाने में रुचि रखते हैं।
podman search CONTAINERNAME
मैंने vncserver खोजा, और यह मुझे मिला। आप देख सकते हैं कि कई विकल्प हैं, और यह सिर्फ आपकी व्यक्तिगत प्राथमिकता पर आ जाएगा।
उन इमेज में से एक को प्राप्त करने के लिए, podman pull कमांड चलाएं।
podman pull CONTAINERNAME
यह अनुशंसा की जाती है कि आप कंटेनर रजिस्ट्री के लिए पूर्ण URL खींचें ताकि पूरी तरह से सटीक हो। एक उदाहरण के रूप में, मैं जो कमांड चला रहा हूं वह है:
podman pull docker.io/michaelaboeckler/vncserver
केवल podman pull vncserver चलाने के बजाय क्योंकि ऐसी इमेज हो सकती हैं जो मैं नहीं चाहता जो इसे चुनने के बजाय चुनी जाएंगी जो मैं चाहता हूं।
आप अपने इमेज पर इस कमांड से भी जांच कर सकते हैं:
podman images
और इस कमांड से कंटेनर रोकें:
podman stop -l
-l फ्लैग का अर्थ है कि यह नवीनतम रन कंटेनर को रोकेगा, लेकिन आप सभी कंटेनर रोकने के लिए -a फ्लैग का भी उपयोग कर सकते हैं।
आपने देखा होगा कि Podman कंटेनर इमेज के लिए docker.io पर भी देख सकता है। ऐसा इसलिए है क्योंकि Podman कमांड और Docker कमांड अनिवार्य रूप से समान हैं - इतना कि कभी-कभी docker कमांड को podman जैसे एलियास करने की सिफारिश की जाती है:
alias docker='podman'
इसका अर्थ है कि जब भी आप docker दर्ज करते हैं, आपकी मशीन वैसे भी podman कमांड चलाएगी।
रूटलेस Podman
अपने सिस्टम को रूटलेस कंटेनर के लिए सेट अप करने के लिए, काफी कुछ सेटअप करना पड़ता है, लेकिन उनके Github पेज पर बढ़िया डॉक्यूमेंटेशन है।
मुझे उम्मीद है कि आपको Podman पर इस प्राइमर का आनंद आया, एक शानदार छोटा टूल जो आपको डेमॉनलेस, रूटलेस कंटेनर चलाने देगा ताकि आपका सिस्टम लीन, टिडी, और सुरक्षित रहे। यदि आपने किया, तो हमारे कुछ अन्य कंटेनर कंटेंट को देखना सुनिश्चित करें, जैसे ChromeOS में कंटेनर में Ubuntu चलाना, Docker कंटेनर को दूसरे होस्ट पर कॉपी करना, और Docker कंटेनर संसाधनों को सीमित करना।