Jinsi ya Kutumia Podman, Dockerfile, na Ubuntu: Usimamizi Salama na wa Kisasa wa Kontena kwenye Linux

目次

1. Utangulizi

Mabadiliko na Umuhimu Unaokua wa Teknolojia ya Kontena

Katika miaka ya hivi karibuni, teknolojia ya kontena imepata umaarufu mkubwa katika uwanja wa maendeleo ya programu na uendeshaji. Hasa, uwezo wa kulingana mazingira ya maendeleo na uzalishaji unahakikisha kurudiwa kwa shughuli, faida kuu ambayo imepata msaada mkubwa miongoni mwa wahandisi.

Ingawa Docker bado ni jukwaa la kontena linalojulikana zaidi, Podman imekuwa ikivutia umakini unaoongezeka kama mbadala wa kisasa. Podman inatoa kiolesura cha amri (CLI) ambacho kinakaribia kuwa sawa na Docker lakini inajitofautisha kwa usanifu usio na daemon na uzito hafifu na usaidizi wake wa utendakazi usio na root (isiyo na root).

Kwa Nini “Podman + Dockerfile + Ubuntu”?

Katika makala hii, tutaelezea jinsi ya kuchanganya Podman, Dockerfile, na Ubuntu kwa mtiririko wa kazi wa kontena wa kisasa kwenye Linux.

  • Ubuntu ni usambazaji maarufu wa Linux unaotumika na kila mtu, kuanzia wanaoanza hadi watumiaji wa hali ya juu,
  • Dockerfile hutumika kama ramani ya kujenga picha za kontena,
  • na Podman ni zana ya kizazi kipya iliyoundwa kudhibiti picha hizi kwa ubora na usalama.

Kwa kuongezeka kwa uelewa wa usalama, njia ya kutumia Podman na Dockerfile kwenye Ubuntu inakubalika zaidi na watengenezaji binafsi na timu za kampuni.

Lengo na Hadhira Lengwa

Lengo la makala hii ni kutoa mwongozo wa hatua kwa hatua wa kujenga kontena za vitendo kwa kutumia Podman na Dockerfile kwenye Ubuntu.

Makala hii imeandaliwa kwa wasomaji kama:

  • Watengenezaji wenye uzoefu na Docker ambao wanavutiwa na Podman
  • Watumiaji wa Ubuntu wanaotafuta usimamizi salama wa kontena
  • Wahandisi wanaolenga kuingiza teknolojia za kontena katika mtiririko wao wa kazi
  • Wanaoanza wanaopenda kuandika Dockerfiles na kujenga kwa kutumia Podman

Tutashughulikia kila kitu kuanzia misingi na vidokezo vya utatuzi hadi tofauti kuu na Docker na jinsi ya kuhamisha.

2. Podman ni Nini?

Muhtasari wa Podman

Podman (Pod Manager) ni zana ya usimamizi wa kontena ya kizazi kipya iliyotengenezwa na jamii inayoongozwa na Red Hat. Kama Docker, inaweza kujenga, kuendesha, na kusimamia kontena zenye viwango vya OCI, lakini muundo na usanifu wake hutofautiana kwa njia muhimu.

Sifa kuu ya Podman ni kwamba haihitaji daemon ya nyuma. Hii inaruhusu utendakazi hafifu na salama. Podman pia inaunga mkono utendakazi usio na root, kuruhusu watumiaji wa kawaida kusimamia kontena bila ruhusa za juu. CLI inalingana sana na Docker, hivyo amri nyingi ni karibu sawa.

Sifa Muhimu za Podman

Hapa kuna baadhi ya sifa muhimu za Podman:

Usanifu Usio na Daemon

Podman hufanya kazi bila daemon ya nyuma (mchakato unaoishi) kwa usimamizi wa kontena. Hii husababisha matumizi mazuri ya rasilimali, bila michakato ya ziada isiyo ya lazima.

Msaada wa Rootless (Watumiaji Wasio na Ruhusa)

Podman inaruhusu watumiaji wa kawaida kuendesha na kusimamia kontena bila ruhusa za msimamizi. Hii inafanya iwezekane kuendesha kontena kwa usalama katika mazingira ya watumiaji wengi au seva, ikipunguza hatari za usalama kwa kiasi kikubwa.

CLI Inayolingana na Docker

Podman inatumia muundo wa amri karibu sawa na Docker. Kwa mfano, amri zifuatazo za Docker hufanya kazi karibu sawa katika Podman:

podman build -t myimage .
podman run -it myimage bash

Hii inaruhusu watumiaji waliokujua Docker kubadilisha kwa urahisi hadi Podman.

Kipengele cha Pod

Podman inakumbatia dhana ya “Pod” kutoka Kubernetes, ikikuruhusu kusimamia kontena nyingi kama kitengo kimoja cha kiakili. Hii inaongeza ulinganifu na Kubernetes na kurahisisha uhamisho kutoka kwa mazingira ya ndani hadi mawingu.

Ulinganifu na Ubuntu

Ingawa Podman imekuwa ikitumika sana kwenye Fedora na usambazaji wa RHEL, pia inafanya kazi kwa uthabiti kwenye Ubuntu. Unaweza kuisakinisha kutoka kwenye hazina rasmi, na usanidi ni rahisi. Hasa tangu Ubuntu 20.04 LTS, matengenezo ya paketi yameboreshwa, na kikwazo cha kuanza kimepungua.

3. Kusakinisha Podman kwenye Ubuntu

Kabla ya Kuanza: Orodha ya Ukaguzi Kabla ya Usakinishaji

Kabla ya kusakinisha Podman kwenye Ubuntu, kwanza angalia toleo lako la Ubuntu. Podman inapendekezwa kwa Ubuntu 20.04 LTS au baadaye. Matoleo ya zamani huenda yakosa vifurushi vinavyohitajika katika hazina rasmi.

Angalia toleo lako la Ubuntu kwa amri ifuatayo:

lsb_release -a

Usakinishaji wa Podman unahitaji ruhusa wa sudo. Hata kama unapanga kutumia hali isiyo na root, ruhusa za msimamizi zinahitajika kwa usakinishaji wa awali, hivyo hakikisha una hizo.

Kusakinisha Podman (Hazina Rasmi ya Ubuntu)

Kwenye Ubuntu 20.04, 22.04, au baadaye, unaweza kusakinisha Podman kwa urahisi kwa kutumia APT:

sudo apt update
sudo apt install -y podman

Baada ya usakinishaji, angalia toleo ili kuthibitisha usanidi uliofanikiwa:

podman --version

Jinsi ya Kupata Toleo la Hivi Karibuni (PPA Rasmi)

Kifurushi cha Podman katika hazina ya kawaida ya Ubuntu huenda kisikuwa kisichojumuisha toleo jipya. Kama unataka vipengele vipya, tumia Personal Package Archive (PPA) rasmi:

. /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

Hii inakupa ufikiaji wa toleo jipya la Podman, linalolingana na mifumo ya Red Hat na Fedora.

Jaribio la Msingi la Utendaji wa Podman

Baada ya usakinishaji, fanya ukaguzi wa haraka:

podman info

Amri hii inaonyesha toleo la Podman, usanidi, na vipengele vinavyoungwa mkono kama vile hali isiyo na root.

Jaribu kuvuta na kuendesha kontena rasmi ya Alpine Linux:

podman run --rm -it alpine sh

Kama shell inapoanzishwa kwa mafanikio, usanidi wako wa Podman unafanya kazi ipasavyo.

4. Kutumia Dockerfile na Podman

Dockerfile ni Nini?

Dockerfile ni muundo wa kuunda picha za kontena. Ni faili ya maandishi inayoorodhesha picha ya msingi, vifurushi vya kusakinisha, faili za kunakili, na maagizo mengine kwa mpangilio.

Zana za kontena kama Podman na Docker zinaweza kuunda mazingira yanayofanana kiotomatiki kulingana na faili hii.

Maagizo ya mfano:

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"]

Hii inasakinisha vifurushi, kunakili skripti, na kufafanua kinachopaswa kuendesha kiotomatiki katika picha inayotokana.

Jinsi ya Kutumia Dockerfile na Podman

Unaweza kujenga picha za kontena kutoka Dockerfiles kwa kutumia Podman, karibu sawa na jinsi unavyofanya na Docker.

1. Tengeneza Saraka

Panga faili zako kama ifuatavyo:

project/
├── Dockerfile
└── app.sh

app.sh inaweza kuwa skripti rahisi:

#!/bin/bash
echo "Hello from Podman container!"

Fanya skripti iwe na ruhusa ya kutekelezeka:

chmod +x app.sh

2. Jenga kwa Podman

Ukikua na Dockerfile katika saraka yako ya sasa, endesha:

podman build -t mypodmanapp .

Hii inaunda picha ya kontena iitwayo mypodmanapp.

3. Angalia Matokeo ya Ujenzi

Tazama picha iliyoundwa kwa:

podman images

4. Endesha Kontena

Anzisha kontena kutoka kwenye picha uliyojenga:

podman run --rm mypodmanapp

Kama kila kitu kimewekwa ipasavyo, utaona: Hello from Podman container!

Tofauti na Containerfile

Podman inasaidia faili zilizo na jina Containerfile, ambazo hutumia muundo ule ule kama Dockerfile. Hii ni jina la kawaida tu, lisilounganishwa na chapa ya Docker.

Utendaji ni sawa. Iwe umeita faili lako Dockerfile au Containerfile, Podman itaitumia:

podman build -f Containerfile -t myimage .

Basta taja jina la faili kwa chaguo -f ikiwa inahitajika.

5. Mfano wa Kivitendo: Kujenga Kontena Inayotokana na Ubuntu

Kuunda Dockerfile Inayotokana na Ubuntu

Tufanye hatua kwa hatua kujenga Dockerfile ya msingi inayotumia Ubuntu na kujenga na kuendesha picha ya kontena kwa kutumia Podman**.

Hapa kuna mfano rahisi wa 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 hii:

  • Inatumia picha rasmi ya Ubuntu 22.04
  • Inasakinisha kifurushi cha curl
  • Inanakili hello.sh kutoka kwa mwenyeji ndani ya kontena
  • Inapanga hello.sh kama script chaguomsingi

Sasa, tengeneza script rahisi ya hello.sh:

#!/bin/bash
echo "Hello from a Podman container!"

Ipa ruhusa ya kutekeleza:

chmod +x hello.sh

Kujenga Picha kwa kutumia Podman

Mara faili zako ziko tayari, jenga picha kwa:

podman build -t ubuntu-hello .

Bendera -t ubuntu-hello inaweka lebo kwenye picha yako; . inaashiria saraka ya ujenzi.

Ukijifunza, utaona picha yako mpya imeorodheshwa na:

podman images

Kuendesha na Kujaribu Picha

Endesha kontena kutoka kwa picha yako mpya:

podman run --rm ubuntu-hello

Matokeo ya mfano:

Hello from a Podman container!

Chaguo --rm linaondoa kiotomatiki kontena baada ya kuisha, ni bora kwa majaribio.

Kidokezo: Ufikiaji wa Kontena kwa Njia ya Kuingiliana

Ukihitaji kufanya kazi kwa njia ya kuingiliana ndani ya kontena, tumia chaguo -it kuanzisha Bash:

podman run -it ubuntu-hello bash

Hii inakupa mazingira ya maendeleo ya Ubuntu yenye uzito mdogo ndani ya kontena yako.

6. Sifa na Vidokezo vya Podman

Nguvu za Podman: Urahisi na Usalama

Podman hutoa rahisi zaidi na usalama ulioimarishwa huku ikibaki inaendana na Docker. Hapa kuna baadhi ya sifa muhimu na vidokezo vya matumizi ya kila siku.

Operesheni Salama kwa Njia Isiyo na Msingi (Rootless)

Moja ya nguvu kuu za Podman ni njia isiyo na msingi (rootless mode), ambayo inaruhusu watumiaji wasio na root kuendesha, kusitisha, na kusimamia kontena.

Kwa mfano, unaweza kutumia Podman bila sudo:

podman run -it ubuntu bash

Operesheni zimepunguzwa hadi saraka ya nyumbani ya mtumiaji, ikipunguza hatari kwa mfumo. Hii ni muhimu sana kwenye seva za kushirikiana au katika mazingira ya maendeleo.

Kuunganisha na systemd kwa Kuanzisha Kiotomatiki

Podman inaweza kuunganisha moja kwa moja na systemd, kuruhusu kontena kuanza kiotomatiki kama huduma za Linux.

Tengeneza faili la unit la systemd kwa:

podman generate systemd --name mycontainer --files --restart-policy=always

Hii inaunda faili la unit katika ~/.config/systemd/user/. Washa na uanze kwa:

systemctl --user daemon-reexec
systemctl --user enable --now container-mycontainer.service

Kontena zitaanza upya kiotomatiki hata baada ya kuanzisha upya seva.

Kusimamia Kontena Nyingi kwa kutumia podman‑compose

Mbali na operesheni za kontena moja, Podman inaunga mkono usimamizi wa kontena nyingi. Kwa kutumia podman‑compose, unaweza kusimamia miradi tata kama Docker Compose.

Sakinisha kwa pip:

pip install podman-compose

Kwa kuwa inaendana na faili za docker-compose.yml, uhamishaji wa miradi ni rahisi.

Kuanzisha huduma, tumia:

podman-compose up -d

Podman inakuwezesha kuunda mazingira ya maendeleo papo hapo.

Amri Nyingine za Manufaa na Vidokezo

Safisha Picha na Kontena Zisizotumika

podman system prune -a

Ondoa faili na picha zisizotumika ili kuachia nafasi ya kuhifadhi.

Ujaza wa Ghala (bash/zsh)

Sakinisha skripti za ukamilishaji za Podman kwa matumizi rahisi ya CLI:

sudo apt install podman-docker

Hii inawasha ukamilishaji wa amri, kama Docker, kwa amri ya podman.

7. Kuhamisha Kutoka Docker kwenda Podman

Kwa Nini Uhamisho wa kwenda Podman Unapopanda

Wakati Docker imekuwa kiwango cha kawaida cha kontena, Podman inazidi kupata umaarufu kwa uzito wake mdogo na usalama wa hali ya juu. Red Hat Enterprise Linux (RHEL) na Fedora zimehamia kutoka Docker kwenda Podman kwa chaguo-msingi, na hivyo timu nyingi zinafikiria uhamisho.

This section covers hatua za kiutendaji na mambo ya kuzingatia kwa uhamisho kutoka Docker hadi Podman.

Ulinganifu wa Amri: Docker vs. Podman

Podman ina ulinganifu mkubwa na amri za Docker, hivyo unaweza kuziweka moja kwa moja:

DockerPodman
docker build -t myapp .podman build -t myapp .
docker run -it myapppodman run -it myapp
docker imagespodman images
docker pspodman ps

Ulinganifu huu usio na dosari wa CLI ni faida kuu ya Podman.

Kupata Ulinganifu Kamili na podman-docker

Ikiwa maandishi yako au mistari ya CI/CD inatumia amri za docker, kusanidi kifurushi cha podman-docker kunaruhusu Podman kutumika kama badala ya moja kwa moja:

sudo apt install podman-docker

Hii inaweka amri ya docker kama kiungo cha ishara kwa Podman:

which docker
# → /usr/bin/docker → podman symlink

Unaweza kisha kuendesha maandishi ya Docker bila mabadiliko.

Badala ya Docker Compose: podman-compose

Kama unatumia Docker Compose kwa miradi ya kontena nyingi, podman-compose hutoa utendaji unaofanana.

Inalingana sana lakini baadhi ya chaguo za Compose zinaweza kutofautiana (kwa mfano depends_on), na ufuatiliaji wa matukio au ukaguzi wa afya unaweza kutenda tofauti. Kwa vikorombwe vya wavuti + DB, uhamisho kwa ujumla ni laini.

Kuhamisha Picha & Vifaa

Picha za Docker za ndani hazionekani kwa Podman kwa chaguo-msingi. Unaweza:

Chaguo 1: Vuta tena kwa Podman

podman pull ubuntu:22.04

Chaguo 2: Hamisha kutoka Docker → Ingiza kwa Podman

# Export with Docker
docker save myimage > myimage.tar

# Import with Podman
podman load < myimage.tar

Hii inafanya picha zilizojengwa na Docker kupatikana katika Podman.

Mambo Mengine ya Kuzingatia

  • Uendeshaji usio na root: Docker kwa kawaida hufanya kazi kama root, wakati Podman imeundwa kwa uendeshaji usio na root kwa chaguo-msingi
  • Muundo wa daemon: Podman haina daemon, hivyo usimamizi wa michakato unatofautiana
  • Nafasi za kuhifadhi logi na data zinaweza kutofautiana—angalia usanidi wakati wa uhamisho

8. Maswali Yanayoulizwa Mara kwa Mara (FAQ)

J1. Ni tofauti kuu kati ya Podman na Docker?

J1. Tofauti kubwa ni kwamba Podman ni “isiyo na daemon” (haihitaji mchakato wa nyuma), na hivyo ni nyepesi na salama zaidi. Podman pia inaunga mkono hali isiyo na root, ikiruhusu watumiaji kudhibiti kontena bila ruhusa za juu. Ulinganifu wa CLI ni wa juu, hivyo amri nyingi ni sawa.

J2. Je, kuna tofauti kati ya Dockerfile na Containerfile?

J2. Hakuna tofauti ya kazi. Zote ni faili zinazofafanua jinsi ya kujenga kontena, zikiwa na sarufi sawa. Baadhi ya miradi hupendelea “Containerfile” kama jina la kimataifa, lakini unaweza kutumia jina lolote na Podman.

J3. Je, naweza kutumia faili za Docker Compose na Podman?

J3. Podman haina usaidizi wa asili kwa Docker Compose, lakini unaweza kutumia podman-compose (zana ya Python) kutafsiri na kuendesha faili za docker-compose.yml katika mazingira ya Podman.

Baadhi ya chaguo za Compose (depends_on, n.k.) zinaweza kuwa na vikwazo, hivyo jaribu usanidi mgumu mapema.

J4. Je, Podman ni thabiti kwenye Ubuntu?

J4. Ndiyo, Podman inafanya kazi kwa uaminifu kwenye Ubuntu 20.04 LTS na toleo jipya. Inapatikana katika hazina rasmi za Ubuntu na inaweza kusanikishwa kwa apt. Kwa toleo la karibuni, unaweza kutumia PPA rasmi.

J5. Je, kuna vikwazo vya ufikiaji katika hali isiyo na root?

J5. Katika hali isiyo na root, baadhi ya shughuli zenye ruhusa na kuunganisha kwenye bandari chini ya 1024 zimepunguzwa. Uhamisho wa bandari unaweza kutatua hili. Kwa matumizi mengi, hali isiyo na root ni ya kiutendaji na inashauriwa.

J6. Je, Podman inaweza kuvuta picha kutoka Docker Hub?

J6. Ndiyo, Podman inaweza kuvuta picha kutoka Docker Hub kwa chaguo-msingi. Wakati mwingine unaweza kuhitaji kutaja njia kamili ya rejista, kwa mfano, docker.io/library/ubuntu:

podman pull docker.io/library/ubuntu

Podman pia inaunga mkono rejista kama Quay.io na GitHub Container Registry.

J7. Je, Podman inafaa kwa matumizi ya uzalishaji?

A7. Ndiyo, Podman inajumuisha dhima za pod zinazolingana na Kubernetes na ushirikiano wa systemd kwa kuanzisha kiotomatiki, na kuifanya iwe sahihi kwa mazingira ya uzalishaji—haswa pale ambapo usalama mkali unahitajika. Podman sasa ni chaguo-msingi kwenye Red Hat Enterprise Linux na Fedora, ikiwa na upokeaji mpana.

年収訴求