Ubuntu मा Podman प्रयोग सुरु: Dockerfile बाट सुरक्षित कन्टेनर गाइड

目次

1. परिचय

कन्टेनर प्रविधिको विकास र ध्यानको पृष्ठभूमि

पछिल्ला वर्षहरूमा, एप्लिकेसन विकास र सञ्चालनको क्षेत्रमा, कन्टेनर प्रविधि को महत्व तीव्र रूपमा बढ्दै गएको छ। विशेष गरी, विकास वातावरण र उत्पादन वातावरणलाई मेल खाने बनाएर, कार्यको पुनरावृत्तिलाई सुनिश्चित गर्ने फाइदाले धेरै इन्जिनियरहरूलाई समर्थन प्राप्त गरेको छ। त्यसमध्ये प्रतिनिधि अस्तित्व Docker हो, तर पछिल्ला वर्षहरूमा यसको विकल्पको रूपमा Podman(पोडम्यान) ले ध्यान आकर्षित गर्दै आएको छ। Podman ले Docker सँग लगभग उही CLI (कमाण्ड लाइन इन्टरफेस) प्रदान गर्दै, डेमनलेस र हलुका, रुट अधिकार आवश्यक नपर्ने (रुटलेस) जस्ता विशेषताहरू बोकेको छ।

किन “Podman + Dockerfile + Ubuntu” ?

यो लेखमा, “Podman” “Dockerfile” “Ubuntu” भन्ने तीन तत्वहरूलाई जोडेर, लिनक्स वातावरणमा आधुनिक कन्टेनर सञ्चालनको व्याख्या गरिनेछ।
  • Ubuntu ले, नौसिखियाबाट उन्नत प्रयोगकर्तासम्म व्यापक रूपमा प्रयोग हुने लोकप्रिय लिनक्स डिस्ट्रिब्युसन हो, र
  • Dockerfile ले, कन्टेनर इमेज निर्माणको लागि डिजाइन ब्लुप्रिन्ट जस्तै अस्तित्व हो,
  • र Podman ले, तिनीहरूलाई थप लचिलो र सुरक्षित रूपमा सञ्चालन गर्ने लागि अर्को पुस्ताको उपकरण हो।
विशेष गरी, सुरक्षा चेतनाको वृद्धिसँगै, Podman लाई Ubuntu मा प्रयोग गरेर Dockerfile लाई उपयोग गर्ने जस्तो संरचना, व्यक्तिगत विकासकर्ता वा कम्पनीको विकास स्थलमा पनि अपनाइँदै आएको छ।

यो लेखको उद्देश्य र लक्षित पाठक

यो लेखको उद्देश्य Ubuntu वातावरणमा Podman प्रयोग गरेर Dockerfile लाई बिल्ड गरी, व्यावहारिक कन्टेनर निर्माण गर्ने प्रक्रियालाई विस्तृत रूपमा व्याख्या गर्ने हो। पाठकको रूपमा, निम्न जस्ता व्यक्तिहरूलाई कल्पना गरिएको छ:
  • Docker को अनुभव छ तर Podman मा रुचि भएको व्यक्ति
  • सुरक्षित वातावरणमा कन्टेनर ह्यान्डल गर्न चाहने Ubuntu प्रयोगकर्ता
  • कन्टेनर प्रविधिलाई कार्यमा समावेश गर्न चाहने इन्जिनियर
  • Dockerfile को वर्णन र Podman मा बिल्डमा प्रयास गर्न चाहने नौसिखिया
लेखमा, आधारभूत प्रयोग विधिबाट समस्या टार्ने टिप्स, थप Docker सँगको भिन्नता वा स्थानान्तरण विधिसम्म कभर गरिनेछ।

2. Podman के हो?

Podman को आधारभूत अवलोकन

Podman (Pod Manager) Red Hat केन्द्रित समुदाय द्वारा विकसित गरिएको, अर्को पुस्ताको कन्टेनर व्यवस्थापन उपकरण हो। Docker जस्तै, OCI (Open Container Initiative) अनुरूप कन्टेनरहरू निर्माण, निष्पादन र व्यवस्थापन गर्न सकिन्छ, तर यसको डिजाइन दर्शन र संरचनामा ठूलो भिन्नता छ। सबैभन्दा ठूलो विशेषता Podman ले डेमन आवश्यक गर्दैन भन्ने कुरा हो। यसले हल्का र सुरक्षित सञ्चालन सम्भव बनाउँछ। साथै, Podman ले rootless मोड लाई पनि समर्थन गर्दछ, जसले गर्दा सामान्य प्रयोगकर्ताले अधिकार वृद्धि बिना कन्टेनर सञ्चालन गर्न सक्छन्, यो पनि ठूलो विशेषता हो। CLI को संगतता उच्च छ, र आधारभूत कमान्डहरू लगभग उस्तै छन्।

Podman को मुख्य विशेषताहरू

तल, Podman को प्रतिनिधि विशेषताहरू केही उल्लेख गरिएको छ।

डेमनलेस संरचना

Podman मा कन्टेनरहरू व्यवस्थापन गर्न डेमन (स्थायी प्रक्रिया) हुँदैन। यसले पृष्ठभूमिमा अनावश्यक प्रक्रियाहरू चलाउनु पर्दैन, जसले स्रोत दक्षताको राम्रो वातावरण प्राप्त गर्दछ।

rootless (गैर-विशेषाधिकार प्रयोगकर्ता) समर्थन

Podman ले, गैर-प्रशासक अधिकारको सामान्य प्रयोगकर्ताले पनि कन्टेनरहरू सुरु र सञ्चालन गर्न सक्छ। यसले बहु-प्रयोगकर्ता वातावरण वा सर्वर वातावरणमा सुरक्षित सञ्चालन सम्भव बनाउँछ, र सुरक्षाका जोखिमहरूलाई उल्लेखनीय रूपमा कम गर्दछ।

Docker संगत CLI

Podman ले Docker सँग लगभग उस्तै कमान्ड प्रणाली अपनाएको छ। उदाहरणका लागि, निम्न जस्ता Docker कमान्डहरू Podman मा पनि उस्तै काम गर्दछन्।
podman build -t myimage .
podman run -it myimage bash
त्यसैले, Docker को अनुभव भएकाहरूले असहजता बिना संक्रमण गर्न सक्छन्।

pod (Pod) कार्यक्षमता

Kubernetes मा “Pod” अवधारणालाई अपनाएको छ, जसले एकाधिक कन्टेनरहरूलाई एक तार्किक एकाइको रूपमा समूहबद्ध गरेर व्यवस्थापन गर्न सकिन्छ। यसले Kubernetes सँगको उच्च अनुकूलता प्रदान गर्दछ, र स्थानीय विकास वातावरणबाट क्लाउड वातावरणमा सहज संक्रमण पनि सम्भव हुन्छ।

Ubuntu सँगको अनुकूलता

Podman लाई Fedora वा RHEL जस्ता वितरणहरूमा सक्रिय रूपमा अपनाइएको छ, तर Ubuntu मा पनि स्थिर रूपमा काम गर्दछ। आधिकारिक रिपोजिटरीबाट स्थापना सम्भव छ, र सेटिङ पनि तुलनात्मक रूपमा सरल छ। विशेष गरी Ubuntu 20.04 LTS पछि, प्याकेजहरूको सुधार भएको छ, जसले परिचयको अवरोध कम भएको छ।

3. Ubuntu मा Podman को स्थापना विधि

परिचय: स्थापना अघिको जाँचका कुराहरू

Ubuntu मा Podman स्थापना गर्दा, पहिले तपाईंले प्रयोग गरिरहनुभएको Ubuntu को संस्करण जाँच गर्नुहोस्। Podman लाई Ubuntu 20.04 LTS वा त्यसपछिका संस्करणहरूमा सञ्चालन गर्न सिफारिस गरिएको छ। पुराना संस्करणहरूमा, आवश्यक प्याकेजहरू आधिकारिक रिपोजिटरीमा समावेश नहुन सक्छन्। निम्न कमान्डले Ubuntu को संस्करण जाँच गर्न सकिन्छ।
lsb_release -a
यसबाहेक, Podman को स्थापनाका लागि sudo अधिकार आवश्यक छ। rootless मोडमा प्रयोग गर्दा पनि, स्थापना समयमा प्रशासक अधिकार आवश्यक पर्ने भएकाले, अग्रिम तयारी गर्नुहोस्।

Podman को स्थापना प्रक्रिया (Ubuntu आधिकारिक रिपोजिटरी)

Ubuntu 20.04 वा 22.04 जस्ता नवीनतम संस्करणहरूमा, Podman लाई APT प्रयोग गरेर सजिलै स्थापना गर्न सकिन्छ।
sudo apt update
sudo apt install -y podman
स्थापना सम्पन्न भएपछि, निम्न कमान्डले संस्करण जानकारी जाँच गरी, सामान्य रूपमा स्थापना भएको पुष्टि गर्नुहोस्।
podman --version

नवीनतम संस्करण प्रयोग गर्न चाहनुहुन्छ भनेको प्रक्रिया (आधिकारिक PPA को थप)

Ubuntu को मानक रिपोजिटरीमा समावेश Podman प्रायः अलि पुरानो संस्करण हुने भएकाले, नवीनतम सुविधाहरू प्रयोग गर्न चाहनुहुन्छ भने आधिकारिक PPA (व्यक्तिगत प्याकेज अभिलेखागार) प्रयोग गर्ने विधि पनि छ।
. /etc/os-release
echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /" | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/xUbuntu_${VERSION_ID}/Release.key | sudo apt-key add -
sudo apt update
sudo apt install -y podman
यो विधिमा, Red Hat वा Fedora जस्तै नवीनतम संस्करणको Podman प्रयोग गर्न सकिन्छ

Podman को आधारभूत सञ्चालन परीक्षण

स्थापना पछि, साधारण सञ्चालन जाँच गरौं।
podman info
यो कमान्डले Podman को संस्करण, सेटिङ सामग्री, समर्थित सुविधाहरू (rootless मोड आदि) जाँच गर्न सकिन्छ। थप रूपमा, निम्न कमान्डले आधिकारिक Alpine Linux कन्टेनर प्राप्त गरी, सञ्चालन गर्न सकिन्छ कि भनेर परीक्षण गर्दछ।
podman run --rm -it alpine sh
सामान्य रूपमा शेल सुरु भएमा, Podman को आधारभूत सञ्चालनमा समस्या नभएको पुष्टि गर्न सकिन्छ।

४. Dockerfile को आधारभूत र Podman मा प्रयोग

Dockerfile भनेको के हो?

Dockerfile ले कन्टेनर इमेज निर्माण गर्नका लागि डिजाइन ब्लूप्रिन्ट हो। यो टेक्स्ट फाइलको रूपमा हुन्छ, जसमा कुन बेस इमेज प्रयोग गर्ने, कुन प्याकेजहरू स्थापना गर्ने, कुन फाइलहरू कपी गर्ने जस्ता कुराहरू आदेशहरूको रूपमा क्रमशः वर्णन गरिन्छ। यो फाइललाई आधार मानेर, Podman वा Docker जस्ता कन्टेनर टुलहरूले एकीकृत वातावरणलाई स्वचालित रूपमा निर्माण गर्न सक्छन्। प्रतिनिधि आदेशहरूका उदाहरणहरू निम्नानुसार छन्:
FROM ubuntu:22.04
RUN apt update && apt install -y curl
COPY ./app.sh /usr/local/bin/app.sh
CMD ["bash", "/usr/local/bin/app.sh"]
यसरी, बेस Ubuntu इमेजमा प्याकेजहरू स्थापना गर्ने, स्क्रिप्ट राख्ने, र अन्तमा कार्यान्वयन सामग्री परिभाषित गर्ने प्रवाह हुन्छ।

Podman मा Dockerfile प्रयोग गर्ने विधि

Podman मा, Dockerfile प्रयोग गरेर कन्टेनर इमेज निर्माण गर्न सम्भव छ। आधारभूत प्रयोग विधि Docker सँग लगभग उस्तै छ।

१. डाइरेक्टरीको तयारी

निम्नानुसारको संरचनामा फाइलहरू तयार पार्नुहोस्।
project/
├── Dockerfile
└── app.sh
app.sh लाई निम्नानुसारको सरल स्क्रिप्ट मान्नुहोस्:
#!/bin/bash
echo "Podman कन्टेनरबाट नमस्कार!"
फाइलमा कार्यान्वयन अनुमति प्रदान गर्नुहोस्:
chmod +x app.sh

२. Podman मा निर्माण

वर्तमान डाइरेक्टरीमा Dockerfile भएको अवस्थामा, निम्नानुसार निर्माण गर्नुहोस्:
podman build -t mypodmanapp .
यो कमान्डद्वारा, mypodmanapp नामको कन्टेनर इमेज निर्माण हुन्छ।

३. निर्माण परिणामको जाँच

निर्मित इमेजलाई निम्नानुसार जाँच गर्न सकिन्छ:
podman images

४. कन्टेनरको सुरुवात

निर्मित इमेज प्रयोग गरेर, कन्टेनर सुरु गर्नुहोस्:
podman run --rm mypodmanapp
सही रूपमा सेट भएमा, स्क्रिप्टको आउटपुटको रूपमा Podman कन्टेनरबाट नमस्कार! देखाइन्छ।

Containerfile सँगको भिन्नता

Podman मा, Dockerfile सँग उस्तै संरचना भएको फाइललाई Containerfile भनिन्छ। यो, “Docker मा निर्भर नगरी तटस्थ नाम प्रयोग गरौं” भन्ने विचारमा आधारित नाम हो। तर, वास्तविक कार्य वा लेखनमा कुनै भिन्नता छैन। फाइल नामलाई Dockerfile बनाए पनि Containerfile बनाए पनि, दुवैलाई Podman ले समस्या बिना पढ्न सक्छ।
podman build -f Containerfile -t myimage .
यसरी -f विकल्पले फाइल नाम निर्दिष्ट गरेमा, कुनै पनि नाममा समर्थन गर्न सकिन्छ।

5. अभ्यास: Ubuntu आधारित कन्टेनर सिर्जना गर्ने

Ubuntu लाई आधार बनाएको Dockerfile को सिर्जना

यहाँबाट, वास्तवमा Ubuntu लाई आधार बनाएको Dockerfile सिर्जना गर्दै, Podman मा कन्टेनर इमेज बिल्ड र चलाउने प्रक्रिया लाई, स्टेप बाई स्टेप रूपमा प्रस्तुत गर्दछौं। पहिले, निम्न जस्तो साधारण Dockerfile तयार पार्नुहोस्:
FROM ubuntu:22.04

RUN apt update &&     apt install -y curl &&     apt clean

COPY hello.sh /usr/local/bin/hello.sh
RUN chmod +x /usr/local/bin/hello.sh

CMD ["/usr/local/bin/hello.sh"]
यो Dockerfile ले निम्न काम गर्दछ:
  • Ubuntu 22.04 को आधिकारिक इमेज प्रयोग गर्दछ
  • curl प्याकेज स्थापना गर्दछ
  • होस्ट पक्षको hello.sh लाई कन्टेनर भित्र कपी गर्दछ
  • hello.sh लाई डिफल्ट कार्यान्वयन स्क्रिप्टको रूपमा निर्दिष्ट गर्दछ
अर्को, hello.sh भन्ने साधारण शेल स्क्रिप्ट पनि सिर्जना गर्नुहोस्:
#!/bin/bash
echo "नमस्कार, Podman कन्टेनरबाटको आउटपुट हो!"
यो स्क्रिप्टमा कार्यान्वयन अनुमति दिनुहोस्:
chmod +x hello.sh

Podman मा इमेज बिल्ड प्रक्रिया

फाइलहरू तयार भएपछि, निम्न कमान्डले बिल्ड गर्नुहोस्।
podman build -t ubuntu-hello .
यहाँ -t ubuntu-hello ले सिर्जित इमेजमा ट्याग नाम दिने विकल्प हो। अन्तिम . ले Dockerfile रहेको डाइरेक्टरी निर्दिष्ट गर्दछ। बिल्ड सफल भएपछि, नयाँ इमेज स्थानीयमा बचत हुन्छ।
podman images
यो कमान्डले इमेज सूची जाँच गर्न सकिन्छ।

बिल्ड गरिएको इमेजको कार्यान्वयन र जाँच

सिर्जित इमेजबाट कन्टेनर चलाउन, निम्न कमान्ड प्रयोग गर्नुहोस्:
podman run --rm ubuntu-hello
आउटपुट उदाहरण:
नमस्कार, Podman कन्टेनरबाटको आउटपुट हो!
--rm विकल्प थपेर, कन्टेनर कार्यान्वयन पछि स्वत: हटाइन्छ, जसले परीक्षण उद्देश्यका लागि उपयुक्त हुन्छ।

थप जानकारी: अन्तरक्रियात्मक कन्टेनर सुरुवात

कन्टेनर भित्र सञ्चालन गर्न चाहनुहुन्छ भने, निम्न जस्तै -it विकल्प थपेर Bash सुरु गर्न सकिन्छ।
podman run -it ubuntu-hello bash
यसरी, Ubuntu आधारित हल्का विकास वातावरणको रूपमा पनि प्रयोग गर्न सकिन्छ।

६. Podman का उपयोगी सुविधाहरू र टिप्सहरू

Podman को शक्ति “लचकता र सुरक्षा” मा छ

Podman ले Docker सँग संगतता कायम राख्दै, अझ लचिलो र सुरक्षित सञ्चालन सम्भव बनाउने सुविधाहरू लाई समावेश गर्दछ। यहाँ, व्यावहारिक रूपमा उपयोगी सुविधाहरू र दैनिक सञ्चालनमा सहयोगी टिप्सहरू प्रस्तुत गर्दछौं।

rootless मोडमा सुरक्षित सञ्चालन

Podman को सबैभन्दा ठूलो विशेषताहरू मध्ये एक “rootless मोड” हो। यो प्रशासक अधिकार नभएका सामान्य प्रयोगकर्ताहरूले पनि कन्टेनरहरूको सुरु, रोक्ने र व्यवस्थापन गर्न सक्ने सुविधा हो। निम्नानुसार, sudo बिना Podman प्रयोग गर्न सकिन्छ:
podman run -it ubuntu bash
यो कार्य प्रयोगकर्ताको होम डाइरेक्टरी भित्रमा सीमित हुने भएकाले, प्रणालीमा प्रभावलाई न्यूनतममा राख्न सकिन्छ। विशेष गरी साझा सर्वर वा विकास वातावरणमा, rootless निकै उपयोगी हुन्छ।

systemd सँग एकीकरण गरेर स्वचालित सुरुवात

Podman मा systemd सँग स्वदेशी एकीकरण सम्भव छ। यसले कन्टेनरहरूलाई Linux सेवा रूपमा सुरुवातमा स्वचालित रूपमा चलाउन सकिन्छ। उदाहरणका लागि, निम्नानुसार Podman को कन्टेनरबाट systemd सेवा युनिट उत्पन्न गर्न सकिन्छ:
podman generate systemd --name mycontainer --files --restart-policy=always
यो कमान्डले ~/.config/systemd/user/ अन्तर्गत युनिट फाइल उत्पन्न गर्दछ। उत्पन्न भएपछि, निम्नानुसार सक्रिय र सुरु गर्न सकिन्छ:
systemctl --user daemon-reexec
systemctl --user enable --now container-mycontainer.service
यसले सर्भर पुन: सुरु हुँदा पनि कन्टेनरहरू स्वचालित रूपमा सुरु हुने संरचना सजिलै प्राप्त गर्न सकिन्छ।

podman-compose बाट बहु-कन्टेनर व्यवस्थापन

Podman मा एकल कन्टेनर सञ्चालनका अतिरिक्त, एकभन्दा बढी कन्टेनरहरूलाई एकसाथ व्यवस्थापन गर्ने तन्त्र पनि छ। Docker Compose जस्तै सञ्चालन सम्भव हुने “podman-compose” प्रयोग गरेर, जटिल संरचनाहरू पनि सजिलै व्यवस्थापन गर्न सकिन्छ। स्थापना Python को pip प्रयोग गरेर निम्नानुसार गर्न सकिन्छ:
pip install podman-compose
सामान्य docker-compose.yml फाइलसँग उच्च संगतता भएकोले, विद्यमान परियोजनाहरू पुन: प्रयोग गर्न सकिने फाइदा पनि छ। सुरुवात पनि सजिलो छ, निम्नानुसार चलाउनु मात्र पर्याप्त छ:
podman-compose up -d
Podman प्रयोग गर्दा पनि, विकास वातावरणलाई एकैछिनमा पुन: निर्माण गर्ने तन्त्र लाई यथावत् प्रयोग गर्न सकिन्छ।

अन्य उपयोगी कमान्डहरू–टिप्सहरू

इमेज सफाई (अनावश्यक इमेज–कन्टेनरहरूको हटाउने)

podman system prune -a
अनावश्यक अस्थायी फाइलहरू वा प्रयोग नभएका इमेजहरू एकैचोटि हटाउने कमान्ड हो। भण्डारण सफाईमा प्रभावकारी छ।

कमान्ड पूर्तिकरणको सेटिङ (bash/zsh)

Podman को कमान्ड पूर्तिकरण स्क्रिप्ट निम्नबाट प्राप्त गर्न सकिन्छ:
sudo apt install podman-docker
यसले podman कमान्डमा पनि docker जस्तै पूर्तिकरण कार्य गर्ने भएकाले, कार्य दक्षता बढ्छ।

7. Docker बाट Podman तर्फको स्थानान्तरण गाइड

Podman तर्फ स्थानान्तरण किन ध्यानाकर्षण भइरहेको छ

Docker लामो समयदेखि कन्टेनर प्रविधिको पर्यायको रूपमा प्रयोग हुँदै आएको छ, तर हालका वर्षहरूमा अझ हल्का र सुरक्षित विकल्पको रूपमा Podman तर्फ स्थानान्तरण गर्ने प्रवृत्ति देखिएको छ। विशेष गरी, Red Hat Enterprise Linux (RHEL) वा Fedora मा Docker को समर्थन घट्दै गएको छ र Podman डिफल्ट भएकोले, स्थानान्तरण विचार गर्ने स्थलहरू पनि बढ्दै गएका छन्। यो अध्यायमा, Docker बाट Podman तर्फ सहज रूपमा स्थानान्तरण गर्नका लागि विशिष्ट चरणहरू र सावधानीहरू व्याख्या गरिन्छ।

Docker र Podman को कमान्ड अनुकूलता

Podman मा Docker सँग उच्च कमान्ड अनुकूलता छ, त्यसैले मूल रूपमा निम्न जस्ता कमान्डहरूलाई सिधै प्रतिस्थापन गर्न सकिन्छ
DockerPodman
docker build -t myapp .podman build -t myapp .
docker run -it myapppodman run -it myapp
docker imagespodman images
docker pspodman ps
यसरी, CLI को सञ्चालन अनुभव परिवर्तन नगरी स्विच गर्न सकिने बुँदा Podman को ठूलो आकर्षण हो।

podman-docker बाट पूर्ण अनुकूलता कसरी गर्ने

विद्यमान स्क्रिप्टहरू वा CI/CD पाइपलाइनहरूमा “docker” कमान्डलाई पूर्वानुमान गरेको अवस्थामा, podman-docker प्याकेज स्थापना गरेर Podman लाई Docker को विकल्पको रूपमा सञ्चालन गर्न सकिन्छ
sudo apt install podman-docker
यो प्याकेज परिचय गर्दा, निम्न जस्तो docker कमान्डले आन्तरिक रूपमा podman लाई कल गर्दछ:
which docker
# → /usr/bin/docker → podman को सिम्बोलिक लिङ्क
यसबाट, विद्यमान Docker का लागि स्क्रिप्टहरूलाई संशोधन बिना Podman मा सञ्चालन गर्न सकिन्छ

docker-compose को विकल्प: podman-compose

Docker Compose मा बहु-कन्टेनरहरू परिभाषित गरिएका परियोजनाहरूमा, podman-compose परिचय गरेर समान सञ्चालन सम्भव छ। अनुकूलता उच्च छ तर, Compose फाइलका केही कार्यहरू वा व्यवहारहरूमा सूक्ष्म भिन्नताहरू छन्, त्यसैले निम्न बुँदाहरूमा ध्यान दिनुहोस्:
  • depends_on जस्ता केही Compose विकल्पहरूमा असमर्थन वा व्यवहार भिन्नता छ
  • इभेन्ट लग वा स्वास्थ्य जाँच वरपरको व्यवहार फरक हुन सक्छ
जटिल संरचना नभएमा, आधारभूत वेब सर्वर + डाटाबेस जस्ता संरचना सहज रूपमा स्थानान्तरण गर्न सकिन्छ।

इमेज-भोल्युमको स्थानान्तरण

Docker मा प्रयोग गरिएका इमेजहरूलाई Podman मा स्थानान्तरण गर्दा, स्थानीय Docker इमेजहरू Podman बाट सिधै सन्दर्भ गर्न सकिँदैन। निम्न जस्तो गरेर, पुन: प्राप्ति वा निर्यात-आयात गर्न आवश्यक छ।

विकल्प १: Podman तर्फ पुन: pull

podman pull ubuntu:22.04

विकल्प २: Docker बाट निर्यात → Podman मा आयात

# Docker तर्फ निर्यात
 docker save myimage > myimage.tar

# Podman तर्फ आयात
podman load < myimage.tar
यसबाट, Docker मा सिर्जना गरिएका इमेजहरूलाई Podman मा पनि प्रयोग गर्न सकिन्छ

अन्य सावधानीहरू

  • rootless समर्थनको भिन्नता: Docker आधारभूत रूपमा root लाई पूर्वानुमान गर्दछ, Podman rootless मा पनि मानक सञ्चालन सम्भव छ
  • डेमन संरचनाको भिन्नता: Podman डेमन-रहित भएकोले, पृष्ठभूमि प्रक्रियाहरूको व्यवस्थापन विधि फरक छ
  • लग वा डाटाको भण्डारण स्थान पनि फरक भएकोले, स्थानान्तरण समयमा सेटिङ फाइलहरू जाँच गर्न आवश्यक छ

८. सामान्य प्रश्नहरू (FAQ)

Q1. Podman र Docker को मुख्य भिन्नता के हो?

A1. सबैभन्दा ठूलो भिन्नता Podman ‘डेमनलेस (स्थायी प्रक्रिया आवश्यक नहुने)’ मोडमा सञ्चालन हुने बुँदा हो। यसले गर्दा, यो अझ हल्का र सुरक्षित सञ्चालन सम्भव हुन्छ। साथै, Podman ले रुटलेस मोड लाई पनि समर्थन गर्दछ, जसले गर्दा सामान्य प्रयोगकर्ताले अधिकार वृद्धि बिना नै कन्टेनर सञ्चालन गर्न सक्छन्, यो ठूलो विशेषता हो। CLI को संगतता उच्च छ, र आधारभूत कमान्डहरू लगभग उस्तै छन्।

Q2. Dockerfile र Containerfile मा के भिन्नता छ?

A2. कार्यात्मक भिन्नता कुनै पनि छैन। दुवै कन्टेनरको निर्माण प्रक्रिया वर्णन गर्नका लागि फाइलहरू हुन्, र वाक्यविन्यास पनि पूर्ण रूपमा उस्तै छ। तथापि, Podman वा OCI अनुरूप परियोजनाहरूमा ‘Docker निर्भर नभएको नाम’ को रूपमा Containerfile लाई प्राथमिकता दिइने प्रवृत्ति छ। यो केवल नामको भिन्नता मात्र हो, त्यसैले वास्तविक सञ्चालनमा Dockerfile लाई नै प्रयोग गर्नमा कुनै समस्या छैन।

Q3. Podman मा Docker Compose प्रयोग गर्न सकिन्छ?

A3. प्रत्यक्ष समर्थन छैन, तर वैकल्पिक उपकरणको रूपमा podman-compose प्रयोग गर्न सकिन्छ। यो Python निर्मित स्क्रिप्ट हो, जसले docker-compose.yml ढाँचाको फाइलहरूलाई Podman वातावरणमा व्याख्या र सञ्चालन गर्न सक्छ। तथापि, केही विकल्पहरू (depends_on जस्ता) मा प्रतिबन्धहरू छन्, त्यसैले जटिल संरचनाहरू ह्यान्डल गर्नका लागि पूर्व जाँच आवश्यक छ

Q4. Podman Ubuntu मा पनि स्थिर रूपमा सञ्चालन हुन्छ?

A4. हो, Ubuntu 20.04 LTS वा त्यसपछिका संस्करणहरू मा स्थिर रूपमा सञ्चालन हुन्छ। Ubuntu आधिकारिक रिपोजिटरीमा पनि Podman समावेश छ, जसलाई apt प्रयोग गरेर सजिलै स्थापना गर्न सकिन्छ। नयाँ संस्करण प्रयोग गर्न चाहनुहुन्छ भने, PPA (व्यक्तिगत प्याकेज अभिलेखागार) प्रयोग गर्ने विधि पनि छ।

Q5. रुटलेस मोडमा कन्टेनरमा पहुँच प्रतिबन्ध छ?

A5. रुटलेस मोडमा, केही विशेषाधिकार सञ्चालनहरू वा पोर्ट नम्बरहरू (१०२४ भन्दा कम) मा बाइन्ड प्रतिबन्धित हुन्छन्। तथापि, पोर्ट फर्वार्डिङ प्रयोग गरेर यी प्रतिबन्धहरूलाई टार्न सकिन्छ। धेरै प्रयोग केसहरूमा, रुटलेस नै पर्याप्त व्यावहारिक हुन्छ।

Q6. Podman मा pull गर्न सकिने इमेजहरू Docker Hub सँग उस्तै छन्?

A6. हो, Podman ले पनि डिफल्ट रूपमा Docker Hub मा पहुँच गरेर इमेजहरू प्राप्त गर्न सक्छ। तथापि, वातावरण अनुसार docker.io/library/ubuntu जस्तै, स्पष्ट रूपमा रजिस्ट्री र नामस्पेस निर्दिष्ट गर्न आवश्यक हुन सक्छ।
podman pull docker.io/library/ubuntu
Podman ले Quay.io वा GitHub Container Registry जस्ता अन्य धेरै रिमोट रजिस्ट्रीहरूलाई पनि समर्थन गर्दछ।

Q7. Podman उत्पादन सञ्चालनमा पनि प्रयोग गर्न सकिन्छ?

A7. हो, Podman ले Kubernetes संगत Pod अवधारणा वा systemd एकीकरण जस्ता उत्पादन सञ्चालनका लागि आवश्यक तत्वहरू धेरै समावेश गर्दछ। विशेष गरी उच्च सुरक्षा आवश्यकता भएको वातावरण मा, Docker भन्दा Podman उपयुक्त हुने अवस्थाहरू पनि छन्। Red Hat Enterprise Linux वा Fedora मा Podman डिफल्ट भएको छ, र ठूलो पैमालाको अनुभव पनि छ।

सन्दर्भ लिङ्कहरू

年収訴求