Podman kwenye Ubuntu: Kujenga na Kuendesha Kontena kwa Dockerfile (Mwongozo wa Msingi hadi wa Vitendo)

.

目次

1. Utangulizi

Mabadiliko ya Teknolojia ya Kontena na Kwa Nini Inahusu

Katika miaka ya hivi karibuni, umuhimu wa teknolojia ya kontena umeongezeka kwa kasi katika maendeleo ya programu na uendeshaji. Hasa, uwezo wa kuhakikisha uzalishaji wa matokeo yanayoweza kurudiwa kwa kulinganisha mazingira ya maendeleo na uzalishaji umepata msaada mkubwa miongoni mwa wahandisi.

Docker imekuwa suluhisho kuu katika eneo hili kwa muda mrefu, lakini katika miaka ya hivi karibuni, Podman imeibuka kama mbadala wenye nguvu. Podman inatoa CLI (Command Line Interface) inayofanana kabisa na Docker huku ikitoa faida kuu kama usanifu usio na daemon, uendeshaji wa uzito hafifu, na utendaji usio na root bila kuhitaji ruhusa za root.

Kwa Nini “Podman + Dockerfile + Ubuntu”?

Makala hii inaelezea uendeshaji wa kisasa wa kontena kwenye Linux kwa kuunganisha vipengele vitatu muhimu: Podman, Dockerfile, na Ubuntu.

  • Ubuntu ni usambazaji wa Linux unaotumika sana unaofaa kwa wanaoanza na watumiaji wazoefu,
  • Dockerfile hutumika kama ramani ya kuunda picha za kontena,
  • Na Podman ni zana ya kizazi kijacho inayowezesha usimamizi wa kontena unaofaa zaidi na salama.

Kwa kuongezeka kwa ufahamu wa usalama, kutumia Podman pamoja na Dockerfile kwenye Ubuntu imekuwa chaguo maarufu kwa watengenezaji binafsi na mazingira ya biashara.

Lengo na Wasomaji Lengwa

Lengo la makala hii ni kuelezea kwa umakini jinsi ya kujenga Dockerfiles na kutengeneza kontena za vitendo kwa kutumia Podman kwenye Ubuntu.

Makala haya yameandikwa kwa wasomaji kama:

  • Wanaojua Docker ambao wanavutiwa na Podman
  • Watumiaji wa Ubuntu wanaotaka kusimamia kontena kwa usalama
  • Wahandisi wanaopanga kutumia teknolojia ya kontena katika kazi zao
  • Wanaoanza ambao wanataka kujaribu kuandika Dockerfiles na kujenga picha kwa kutumia Podman

Mbali na matumizi ya msingi, makala hii pia inashughulikia vidokezo vya utatuzi wa matatizo, tofauti kuu kutoka Docker, na mikakati ya uhamisho.

2. Podman ni Nini?

Muhtasari wa Msingi wa Podman

Podman (Pod Manager) ni zana ya usimamizi wa kontena ya kizazi kijacho iliyotengenezwa na jamii inayoongozwa na Red Hat. Kama Docker, inaweza kujenga, kuendesha, na kusimamia kontena zinazolingana na OCI (Open Container Initiative), lakini falsafa ya muundo na usanifu wake hutofautiana sana.

Kipengele kinachojulikana zaidi ni kwamba Podman haina haja ya daemon. Hii inaruhusu utendaji wa uzito hafifu na salama. Podman pia inaunga mkono hali isiyo na root, ikiruhusu watumiaji wa kawaida kusimamia kontena bila kupanda ngazi ya ruhusa. Ulinganifu wake wa CLI na Docker ni wa juu sana, na kufanya uhamisho kuwa rahisi.

Sifa Muhimu za Podman

Hapo chini ni baadhi ya sifa kuu za Podman:

Usanifu Usio na Daemon

Podman haitegemei mchakato wa daemon wa nyuma kusimamia kontena. Hii inaruhusu matumizi bora ya rasilimali bila huduma za nyuma zisizo za lazima.

Msaada wa Hali Isiyo na Root (Mtumiaji Asiye na Ruhusa)

Podman inaruhusu watumiaji wasio wa kiutawala kuanzisha na kusimamia kontena. Hii inaboresha usalama sana katika mazingira ya watumiaji wengi au seva na hupunguza hatari za usalama kwa kiasi kikubwa.

CLI Inayolingana na Docker

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

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

Matokeo yake, watumiaji wa Docker wanaweza kuhamisha kwa usumbufu mdogo.

Utendaji wa Pod

Podman inajumuisha dhana ya “Pod” ya Kubernetes, ikiruhusu kontena nyingi kusimamiwa kama kitengo kimoja cha kimantiki. Hii inafanya Podman kuwa na ulinganifu mkubwa na Kubernetes na kuwezesha mabadiliko laini kutoka maendeleo ya ndani hadi mazingira ya wingu.

Ulinganifu na Ubuntu

Ingawa Podman imekubaliwa sana katika usambazaji wa Fedora na wale wa msingi wa RHEL, pia inafanya kazi kwa uthabiti kwenye Ubuntu. Inaweza kusanikishwa kutoka kwenye hazina rasmi kwa usanidi rahisi. Tangu Ubuntu 20.04 LTS, usaidizi wa vifurushi umeboreshwa sana, kupunguza kikwazo cha kuanza.

3. Kusakinisha Podman kwenye Ubuntu

Kabla ya Kuanza: Mahitaji ya Awali

Kabla ya kusanikisha Podman kwenye Ubuntu, kwanza angalia toleo lako la Ubuntu. Podman inapendekezwa rasmi kwa Ubuntu 20.04 LTS au baadaye. Katika matoleo ya zamani, vifurushi vinavyohitajika huenda visipatikane katika hazina rasmi.

Unaweza kuangalia toleo lako la Ubuntu kwa kutumia amri ifuatayo:

lsb_release -a

Kusanikisha Podman kunahitaji ruhusa za sudo. Hata kama unapanga kutumia Podman katika hali isiyo na root, ruhusa za msimamizi bado zinahitajika wakati wa usakinishaji.

Kusakinisha Podman kutoka kwenye Hazina Rasmi ya Ubuntu

Katika matoleo ya hivi karibuni ya Ubuntu kama 20.04 au 22.04, Podman inaweza kusanikishwa kwa urahisi kwa kutumia APT.

sudo apt update
sudo apt install -y podman

Baada ya usakinishaji, thibitisha kuwa Podman imesanikishwa kwa usahihi kwa kuangalia toleo:

podman --version

Kusakinisha Toleo la Hivi Karibuni kwa Kutumia PPA Rasmi

Toleo la Podman lililojumuishwa katika hazina ya chaguo-msingi ya Ubuntu mara nyingi ni la zamani kidogo. Ikiwa unataka kutumia vipengele vipya, unaweza kusanikisha Podman kutoka 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

Njia hii inakuwezesha kutumia matoleo ya hivi karibuni ya Podman yanayolingana na yale kwenye mifumo ya Red Hat na Fedora.

Jaribio la Msingi la Utendaji wa Podman

Baada ya usakinishaji, fanya jaribio rahisi ili kuthibitisha kuwa Podman inafanya kazi kwa usahihi:

podman info

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

Unaweza pia kujaribu utekelezaji wa kontena kwa kuendesha picha rasmi ya Alpine Linux:

podman run --rm -it alpine sh

Kama shell inapoanza kwa mafanikio, Podman inafanya kazi kwa usahihi.

4. Misingi ya Dockerfile na Matumizi na Podman

Dockerfile ni Nini?

Dockerfile ni muundo unaotumika kujenga picha za kontena. Ni faili la maandishi linalofafanua maagizo kama vile picha ya msingi ya kutumia, vifurushi vya kusanikisha, na faili za kunakili.

Kulingana na faili hili, zana za kontena kama Podman na Docker zinaweza kujenga kiotomatiki mazingira yanayofanana.

Maagizo ya kawaida ya Dockerfile yanajumuisha:

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

Mfano huu husanikisha vifurushi kwenye picha ya msingi ya Ubuntu, kunakili script, na kufafanua amri ya utekelezaji chaguomsingi.

Kutumia Dockerfile na Podman

Podman inaweza kujenga picha za kontena kutoka Dockerfiles kwa njia ile ile kama Docker.

1. Kuandaa Saraka ya Mradi

Unda muundo wa saraka ifuatayo:

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

Faili la app.sh linaweza kuwa na script rahisi:

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

Fanya script iwe na ruhusa ya kutekelezwa:

chmod +x app.sh

2. Kujenga Picha kwa Podman

Endesha amri ifuatayo katika saraka iliyo na Dockerfile:

podman build -t mypodmanapp .

Hii inaunda picha ya kontena iitwayo mypodmanapp.

3. Kuthibitisha Picha Iliyojengwa

Unaweza kuorodhesha picha zinazopatikana kwa:

podman images

4. Kuendesha Kontena

Anzisha kontena kwa kutumia picha iliyojengwa:

podman run --rm mypodmanapp

with translations.If configured correctly, the output Hello from Podman container! will be displayed.

Ikiwa imewekwa vizuri, matokeo Hello from Podman container! yataonyeshwa.

Dockerfile vs Containerfile

Katika Podman, faili zinazotumia sintaksia ya Dockerfile pia zinaweza kuitwa Containerfile. Jina hili linaakisi hamu ya kutumia istilahi zisizo na utegemezi wa Docker.

Hakuna tofauti ya kazi kati ya Dockerfile na Containerfile. Zote zinasaidiwa kikamilifu na Podman.

podman build -f Containerfile -t myimage .

Unaweza kubainisha jina la faili wazi kwa kutumia chaguo -f.

5. Mfano wa Kivitendo: Kuunda Kontena ya Ubuntu

Kuunda Dockerfile Kulingana na Ubuntu

Kutoka hapa, tutapitia mfano wa kivitendo, hatua kwa hatua wa kuunda Dockerfile kulingana na Ubuntu na kujenga na kuendesha picha ya kontena kwa kutumia Podman.

Kwanza, unda Dockerfile rahisi ifuatayo:

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 inafanya vitendo vifuatavyo:

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

Ifuatayo, unda script rahisi ya shell iitwayo hello.sh:

#!/bin/bash
echo "Hello, this output is from a Podman container!"

Toa ruhusa ya kutekeleza kwa script:

chmod +x hello.sh

Kujenga Picha kwa Podman

Mara faili zimekuwa tayari, jenga picha kwa kutumia amri ifuatayo:

podman build -t ubuntu-hello .

Chaguo -t ubuntu-hello linape jina la lebo kwa picha, na . inayofuata inaelezea saraka iliyo na Dockerfile.

Kama ujenzi utakamilika kwa mafanikio, picha itahifadhiwa ndani ya mashine.

podman images

Unaweza kutumia amri hii kuthibitisha kwamba picha imeundwa.

Kuendesha na Kuthibitisha Picha Iliyoundwa

Endesha kontena kutoka kwa picha iliyojengwa hivi karibuni kwa kutumia amri ifuatayo:

podman run --rm ubuntu-hello

Matokeo ya mfano:

Hello, this output is from a Podman container!

Chaguo --rm linaondoa kontena kiotomatiki baada ya utekelezaji, na hivyo kuwa bora kwa madhumuni ya majaribio.

Hiari: Kuendesha Kontena ya Kuingiliana

Kama unataka kuingiliana moja kwa moja na kontena, unaweza kuianzisha kwa chaguo -it na kuzindua Bash:

podman run -it ubuntu-hello bash

Hii inakuwezesha kutumia kontena kama mazingira ya maendeleo yanayopatikana kwa uzito mdogo yanayotokana na Ubuntu.

6. Sifa na Vidokezo vya Podman Vinavyofaa

Nguvu za Podman: Urekebishaji na Usalama

Wakati wa kudumisha ulinganifu na Docker, Podman inatoa sifa zinazowezesha operesheni za kontena zinazobadilika zaidi na salama. Sehemu hii inatambulisha sifa na vidokezo vya vitendo ambavyo ni muhimu katika mtiririko wa kazi wa kila siku.

Operesheni Salama kwa Hali ya Rootless

Moja ya sifa zenye nguvu zaidi za Podman ni hali ya rootless, ambayo inaruhusu watumiaji wa kawaida kuanzisha, kusitisha, na kusimamia kontena bila ruhusa za msimamizi.

Unaweza kuendesha kontena bila sudo kama ilivyoonyeshwa hapa chini:

podman run -it ubuntu bash

Kwa kuwa operesheni hii imepunguzwa kwenye saraka ya nyumbani ya mtumiaji, athari kwa mfumo mzima hupunguzwa. Hali ya rootless ni muhimu hasa katika seva za kushirikiana na mazingira ya maendeleo.

Uanzishaji Otomatiki kwa Uunganishaji wa systemd

Podman inaunga mkono uunganishaji wa asili na systemd, kuruhusu kontena ziendeshe kiotomatiki kama huduma za Linux.

Unaweza kutengeneza kitengo cha huduma ya systemd kwa kontena kwa kutumia amri ifuatayo:

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

Amri hii inaunda faili za vitengo chini ya ~/.config/systemd/user/. Baada ya kuzalisha, wezesha na anza huduma kama ifuatavyo:

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

This configuration ensures that kontena huanza kiotomatiki wakati mfumo unapoanza.

Kudhibiti Kontena Nyingi na podman-compose

Mbali na kudhibiti kontena moja, Podman inasaidia utendaji wa kontena nyingi. Kwa kutumia podman-compose, unaweza kufikia utendaji sawa na Docker Compose.

Weka podman-compose kwa kutumia pip:

pip install podman-compose

Kwa sababu inaunganishwa sana na faili za docker-compose.yml, unaweza mara nyingi kutumia tena mipangilio iliyopo.

Kuanza huduma ni rahisi kama kuendesha:

podman-compose up -d

Hii inakuruhusu kutoa tena mazingira kamili ya maendeleo mara moja hata unapotumia Podman.

Amri na Vidokezo Muhimu Zaidi

Kusafisha Picha na Kontena Zisizotumika

podman system prune -a

Amri hii inaondoa kontena zisizotumika, picha, na faili za muda, ikisaidia kuweka uhifadhi wako safi.

Kuwezesha Ukamilishaji wa Amri (bash/zsh)

Unaweza kuweka msaada wa ukamilishaji wa amri na kifurushi kinachofuata:

sudo apt install podman-docker

Hii inawezesha ukamilishaji wa amri kama wa Docker kwa Podman, ikiboresha tija.

7. Mwongozo wa Uhamiaji: Kutoka Docker hadi Podman

Kwa Nini Uhamiaji hadi Podman Unapata Tahadhari

Docker imekuwa sawa na teknolojia ya kontena kwa muda mrefu, lakini katika miaka ya hivi karibuni, mabadiliko kuelekea Podman kama mbadala nyepesi na salama zaidi yamepata kasi. Hasa, Red Hat Enterprise Linux (RHEL) na Fedora zimepunguza msaada wa Docker na kumudu Podman kama injini ya kontena ya chaguo-msingi, zikichochea mashirika mengi kufikiria uhamiaji.

Sehemu hii inaeleza hatua za vitendo na mazingatio muhimu kwa uhamiaji laini kutoka Docker hadi Podman.

Uunganishwaji wa Amri Kati ya Docker na Podman

Podman inadumisha kiwango cha juu cha uunganishwaji wa CLI na Docker, ikiruhusu amri nyingi kubadilishwa moja kwa moja bila marekebisho.

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

Hii inafanya iwezekane kubadili hadi Podman bila kubadilisha mtiririko wako wa kazi, ambayo ni moja ya faida zake kubwa zaidi.

Kufikia Uunganishwaji Kamili na podman-docker

Ikiwa skripiti zilizopo, mifereji ya CI/CD, au zana zinadhani uwepo wa amri ya docker, unaweza kuweka kifurushi cha podman-docker ili kufanya Podman ifanye kama mbadala wa moja kwa moja.

sudo apt install podman-docker

Baada ya kuweka, amri ya docker inakuwa kiungo cha ishara kwa Podman:

which docker
# → /usr/bin/docker → symbolic link to podman

Hii inaruhusu skripiti zilizopo zenye msingi wa Docker kuendesha kwenye Podman bila marekebisho.

Kubadilisha docker-compose na podman-compose

Kwa miradi inayotumia Docker Compose kufafanua mazingira ya kontena nyingi, podman-compose inatoa mbadala unaounganishwa.

Ingawa uunganishwaji ni wa juu kwa ujumla, angalia mapungufu yafuatayo:

  • Chaguzi zingine za Compose (kama depends_on ) zinaweza kuwa hazina msaada au kuwa na tabia tofauti
  • Tofauti zinaweza kuwepo katika kurekodi matukio na tabia ya kuangalia afya

Kwa mipangilio ya kawaida kama mchanganyiko wa seva ya wavuti na hifadhi ya data, uhamiaji huwa rahisi kwa kawaida.

Kuhamisha Picha na Volumu

Picha za Docker zilizohifadhiwa ndani haziwezi kufikiwa moja kwa moja na Podman. Lazima uzivute tena au kuziuza na kuzipakia.

Chaguo 1: Vuta Tena Picha na Podman

podman pull ubuntu:22.04

Chaguo 2: Uzaa kutoka Docker na Upakie kwenye Podman

# Export from Docker
docker save myimage > myimage.tar

# Import into Podman
podman load < myimage.tar

Hii inawezesha picha zilizojengwa na Docker kutumika tena katika Podman.

Mazingatio Yaidi ya Uhamiaji

  • Tofauti za uendeshaji bila root : Docker kwa kawaida inadhani matumizi ya root, wakati Podman imeundwa kwa uendeshaji bila root
  • Muundo wa daemon : Podman haina daemon, ikibadilisha jinsi michakato ya nyuma inavyodhibitiwa
  • Maeneo ya kurekodi na uhifadhi wa data yanatofautiana na yanapaswa kukaguliwa wakati wa uhamiaji

8. Masuala Yanayoulizwa Mara Kwa Mara (FAQ)

Q1. Tofauti kuu kati ya Podman na Docker ni nini?

A1. Tofauti muhimu zaidi ni kwamba Podman inafanya kazi bila daemon. Hii inaruhusu uendeshaji nyepesi na salama zaidi. Podman pia inasaidia rootless mode, inayowezesha udhibiti wa kontena bila kupandisha vibali. Uwezo wa CLI na Docker ni wa juu sana.

Q2. Tofauti kati ya Dockerfile na Containerfile ni nini?

A2. Hakuna tofauti ya kiutendaji kabisa. Faili zote mbili zinaelezea maagizo ya kujenga kontena kwa kutumia sintaksisi sawa.
Jina Containerfile linapendelewa katika miradi inayofuata OCI ili kuepuka maneno maalum ya Docker. Katika mazoezi, Dockerfile inafanya kazi vizuri na Podman.

Q3. Je, Docker Compose inaweza kutumika na Podman?

A3. Docker Compose haiungwa mkono moja kwa moja, lakini unaweza kutumia podman-compose kama mbadala. Inafasiri faili za docker-compose.yml katika mazingira ya Podman.

Baadhi ya chaguzi kama depends_on zina mipaka, kwa hivyo kupima kunapendekezwa kwa mipangilio ngumu.

Q4. Je, Podman inaendesha kwa utulivu kwenye Ubuntu?

A4. Ndiyo. Podman inaendesha kwa utulivu kwenye Ubuntu 20.04 LTS na toleo la baadaye. Inapatikana katika hifadhi rasmi za Ubuntu na inaweza kusakinishwa kwa urahisi kwa kutumia apt. Kwa matoleo mapya, kutumia PPA pia ni chaguo.

Q5. Je, kuna mipaka wakati wa kutumia rootless mode?

A5. Rootless mode inazuia shughuli fulani zenye vibali maalum na kuunganisha na bandari chini ya 1024. Hata hivyo, mipaka hii mara nyingi inaweza kuepukwa kwa kutumia upitishaji wa bandari. Kwa matumizi mengi, rootless mode ni ya vitendo kamili.

Q6. Je, Podman inaweza kuvuta picha sawa na Docker Hub?

A6. Ndiyo. Podman inaweza kuvuta picha kutoka Docker Hub kwa chaguo-msingi. Katika mazingira mengine, unaweza kuhitaji kutaja rekodi na nafasi wazi:

podman pull docker.io/library/ubuntu

Podman pia inasaidia rekodi zingine kama Quay.io na GitHub Container Registry.

Q7. Je, Podman inafaa kwa mazingira ya uzalishaji?

A7. Ndiyo. Podman inajumuisha vipengele vinavyohitajika kwa matumizi ya uzalishaji, kama dhana za pod zinazofuata Kubernetes na muunganisho wa systemd. Katika mazingira nyeti ya usalama, Podman inaweza kuwa chaguo bora kuliko Docker.

Podman tayari ni injini chaguo-msingi ya kontena katika RHEL na Fedora na ina utumiaji mkubwa wa uzalishaji.