- 1 1. Sissejuhatus
- 2 2. Mis on Podman?
- 3 3. Podmani paigaldamine Ubuntu’sse
- 4 4. Dockerfile’i põhitõed ja kasutamine Podmaniga
- 5 5. Praktiline näide: Ubuntu põhine konteiner
- 6 6. Podmani kasulikud funktsioonid ja näpunäited
- 7 7. Dockerilt Podmanile ülemineku juhend
- 8 8. Korduma kippuvad küsimused (KKK)
- 8.1 K1. Mis vahe on Podmanil ja Dockeril?
- 8.2 K2. Kas Dockerfile ja Containerfile erinevad?
- 8.3 K3. Kas Podman toetab Docker Compose’i?
- 8.4 K4. Kas Podman töötab stabiilselt Ubuntu’s?
- 8.5 K5. Kas rootless-režiimis on piiranguid?
- 8.6 K6. Kas Podmaniga saab tõmmata samu pilte mis Docker Hubis?
- 8.7 K7. Kas Podman sobib tootmiskeskkonda?
- 9 Viited
1. Sissejuhatus
Konteinertehnoloogia areng ja selle populaarsuse taust
Viimastel aastatel on konteinertehnoloogia tähtsus rakenduste arenduse ja halduse valdkonnas kiiresti kasvanud. Eriti hinnatakse võimalust tagada ühtne käitumine arendus- ja tootmiskeskkonnas, mis suurendab töökindlust ning on pälvinud paljude inseneride toetuse.
Suurimaks näiteks on Docker, kuid viimasel ajal kogub tähelepanu ka Podman, mis pakub alternatiivi. Podman kasutab peaaegu sama CLI-d (käsurealiidest) kui Docker, kuid on demonita, kergekaaluline ja ei vaja root-õigusi (rootless), mis teeb selle eriliseks.
Miks just “Podman + Dockerfile + Ubuntu”?
Selles artiklis selgitatakse, kuidas kombineerida Podmanit, Dockerfile’i ja Ubuntu’t ning rakendada kaasaegset konteinerihaldust Linuxi keskkonnas.
- Ubuntu on populaarne Linuxi distributsioon nii algajate kui ka edasijõudnute seas,
- Dockerfile toimib konteineripildi “joonisena”,
- Podman on järgmise põlvkonna tööriist, mis võimaldab paindlikku ja turvalist haldust.
Eriti kasvava turvateadlikkuse taustal on Podmani kasutamine Ubuntu’l koos Dockerfile’iga muutumas levinuks nii iseseisvate arendajate kui ka ettevõtete seas.
Artikli eesmärk ja sihtrühm
Selle artikli eesmärk on juhendada samm-sammult, kuidas luua praktiline konteiner Podmani ja Dockerfile’i abil Ubuntu keskkonnas.
Ootame, et sihtrühma kuuluvad:
- Inimesed, kellel on Dockeriga kogemus, kuid huvituvad Podmanist
- Ubuntu kasutajad, kes soovivad turvaliselt konteineritega töötada
- Insenerid, kes soovivad tuua konteinertehnoloogia oma tööprotsessidesse
- Algajad, kes tahavad proovida Dockerfile’i kirjutamist ja Podmani kasutamist
Artikkel hõlmab põhikasutust, probleemide vältimise näpunäiteid ning erinevusi ja üleminekumeetodeid Dockerilt Podmanile.
2. Mis on Podman?
Podmani põhiülevaade
Podman (Pod Manager) on järgmise põlvkonna konteinerihaldustööriist, mida arendab Red Hat’i eestvedamisel kogukond. Sarnaselt Dockerile saab Podmaniga ehitada, käitada ja hallata OCI (Open Container Initiative) standardile vastavaid konteinereid, kuid sellel on teistsugune arhitektuur ja filosoofia.
Podmani suurim erinevus on see, et see ei vaja demoni (taustaprotsessi) olemasolu. Tänu sellele saab seda kasutada kergekaaluliselt ja turvaliselt. Lisaks toetab Podman rootless-režiimi, mis võimaldab tavakasutajal käivitada ja hallata konteinereid ilma täisõigusteta. CLI on väga sarnane Dockerile ning põhikäsklused on peaaegu identsed.
Podmani peamised omadused
Allpool on toodud Podmani peamised eelised.
Demonita arhitektuur
Podman ei kasuta konteinerite haldamiseks daemon’it (alalist protsessi). See võimaldab vältida tarbetuid taustaprotsesse ning saavutada ressursisäästliku keskkonna.
Rootless-tugi (tavakasutajatele)
Podman võimaldab tavakasutajatel käivitada ja hallata konteinereid. See on eriti kasulik mitmekasutajaga süsteemides ja serverites ning vähendab oluliselt turvariske.
Dockeri CLI ühilduvus
Podman kasutab peaaegu samu käske kui Docker. Näiteks alltoodud Docker-käsud töötavad analoogselt Podmaniga:
podman build -t myimage .
podman run -it myimage bash
Seega saavad Dockeriga harjunud kasutajad lihtsalt üle minna.
Pod-funktsioon
Podman sisaldab Kubernetesest tuntud “Pod” kontseptsiooni, võimaldades hallata mitut konteinerit ühe loogilise üksusena. See suurendab ühilduvust Kubernetesega ning võimaldab sujuvat üleminekut lokaalsest pilvekeskkonda.
Kooskõla Ubuntu’ga
Podman on aktiivselt kasutusel Fedora ja RHEL-põhistes distributsioonides, kuid töötab stabiilselt ka Ubuntu’s. Ametlikust repositooriumist saab selle hõlpsalt paigaldada ning seadistamine on lihtne, eriti Ubuntu 20.04 LTS ja uuemates versioonides.
3. Podmani paigaldamine Ubuntu’sse
Enne alustamist: kontrolli tingimusi
Enne Podmani paigaldamist Ubuntu’sse kontrolli, mis Ubuntu versiooni kasutad. Soovitatav on kasutada Ubuntu 20.04 LTS või uuemat. Vanemates versioonides ei pruugi vajalikud paketid ametlikus repositooriumis saadaval olla.
Versiooni kontrollimiseks kasuta järgmist käsku:
lsb_release -a
Podmani paigaldamiseks on vajalikud sudo
õigused. Isegi kui kavatsed kasutada rootless-režiimi, peab paigaldamise ajal olema administraatoriõigused.
Podmani paigaldamine (Ubuntu ametlik repositoorium)
Ubuntu 20.04 või 22.04 puhul saab Podmani hõlpsalt paigaldada APT-i kaudu:
sudo apt update
sudo apt install -y podman
Pärast paigaldamist kontrolli versiooni järgmiselt:
podman --version
Uusima versiooni paigaldamine (ametliku PPA kaudu)
Ametlikus Ubuntu repositooriumis võib Podmani versioon olla pisut vanem, seega uusimate funktsioonide jaoks lisa ametlik PPA (Personal Package Archive):
. /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
Selle meetodiga saab kasutada Podmani uusimat versiooni, mis on võrdväärne Red Hat’i või Fedora omadega.
Podmani baastest
Pärast paigaldamist tee lihtne toimivustest:
podman info
See käsk kuvab Podmani versiooni, seadistused ja toetatud funktsioonid (sh rootless).
Samuti saad testida ametliku Alpine Linuxi konteineri käivitamist:
podman run --rm -it alpine sh
Kui shell käivitub, on Podman edukalt töökorras.
4. Dockerfile’i põhitõed ja kasutamine Podmaniga
Mis on Dockerfile?
Dockerfile on “joonis”, mille järgi ehitatakse konteineripilt. Selles tekstifailis on käsud selle kohta, millist baaspilti kasutada, millised paketid paigaldada, millised failid kopeerida jms.
Podman või Docker loovad selle faili põhjal ühtlase keskkonna automaatselt.
Levinud käskude näited:
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"]
Nii paigaldatakse baasil Ubuntu-pilt, vajalikud paketid, kopeeritakse skript ja määratakse käivitatav fail.
Kuidas kasutada Dockerfile’i Podmaniga
Podman võimaldab ehitada konteineripilte Dockerfile’i abil täpselt nagu Docker.
1. Kataloogi ettevalmistamine
Loo järgmine failistruktuur:
project/
├── Dockerfile
└── app.sh
app.sh
võiks sisaldada näiteks:
#!/bin/bash
echo "Tere tulemast Podman konteinerisse!"
Lisa failile käivitusõigus:
chmod +x app.sh
2. Pildi ehitamine Podmaniga
Ole veendunud, et oled kataloogis, kus Dockerfile asub, ning ehita pilt:
podman build -t mypodmanapp .
See loob konteineripildi nimega mypodmanapp
.
3. Pildi kontroll
Kontrolli loodud pilte:
podman images
4. Konteineri käivitamine
Käivita konteiner ehitatud pildist:
podman run --rm mypodmanapp
Kui seadistus on õige, näed skripti väljundit: Tere tulemast Podman konteinerisse!
Erinevus Containerfile ja Dockerfile vahel
Podmanis võib kasutada Dockerfile’iga sama süntaksit omavat faili nimega Containerfile. See on lihtsalt neutraalsem nimetus, kuid sisu ja tööpõhimõte on sama.
Võid määrata failinime käsuga -f
:
podman build -f Containerfile -t myimage .
Nii toimib see nii Dockerfile kui ka Containerfile nime korral.
5. Praktiline näide: Ubuntu põhine konteiner
Ubuntu baasil Dockerfile loomine
Siin on praktiline näide Ubuntu baasil Dockerfile’i loomisest ja selle põhjal konteineripildi ehitamisest Podmaniga.
Valmista ette järgmine lihtne 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"]
Selles Dockerfile’s:
- Kasutatakse ametlikku Ubuntu 22.04 pilti
- Paigaldatakse
curl
pakett - Kopeeritakse
hello.sh
konteinerisse - Määratakse
hello.sh
vaikimisi käivitatavaks skriptiks
Seejärel loo lihtne hello.sh
:
#!/bin/bash
echo "Tere tulemast Podman konteinerist!"
Anna skriptile käivitusõigus:
chmod +x hello.sh
Podmaniga pildi ehitamine
Kui failid on valmis, ehita pilt käsuga:
podman build -t ubuntu-hello .
-t ubuntu-hello
annab loodavale pildile nime. Punkt (.
) viitab käesolevale kataloogile.
Pärast edukat ehitamist on pilt saadaval lokaalselt:
podman images
Ehitatud pildi käivitamine ja kontroll
Käivita konteiner järgmiselt:
podman run --rm ubuntu-hello
Väljund:
Tere tulemast Podman konteinerist!
--rm
kustutab konteineri automaatselt pärast käivitamist – mugav testimiseks.
Lisa: Interaktiivne konteineri käivitamine
Kui soovid töötada otse konteineris, kasuta -it
valikut ja käivita bash:
podman run -it ubuntu-hello bash
Nii saab kasutada Ubuntu baasil arenduskeskkonda.
6. Podmani kasulikud funktsioonid ja näpunäited
Podmani tugevused: paindlikkus ja turvalisus
Podman pakub Dockeri ühilduvust, kuid võimaldab paindlikumat ja turvalisemat konteinerihaldust. Siin on mõned praktilised nõuanded ja funktsioonid igapäevaseks kasutamiseks.
Turvaline kasutus rootless-režiimis
Üks Podmani suurimaid eeliseid on rootless-režiim, mis tähendab, et tavakasutaja saab käivitada ja hallata konteinereid ilma sudo’ta:
podman run -it ubuntu bash
Konteinerite käivitamine piirdub kasutaja kodukataloogiga, minimeerides süsteemi mõjutamise võimalust. See on eriti kasulik jagatud serverites ja arenduskeskkondades.
Automaatkäivitus systemd-iga
Podman integreerub loomulikult systemd-iga, võimaldades konteineri automaatset käivitamist teenusena.
Teenuseühiku genereerimine:
podman generate systemd --name mycontainer --files --restart-policy=always
Failid luuakse ~/.config/systemd/user/
alla. Aktiveeri ja käivita teenus:
systemctl --user daemon-reexec
systemctl --user enable --now container-mycontainer.service
Nii käivitatakse konteiner automaatselt ka pärast serveri taaskäivitust.
Mitme konteineri haldus podman-compose’iga
Lisaks üksikkonteineritele saab podman-compose’iga hallata mitut konteinerit korraga. Töötab väga sarnaselt Docker Compose’ile.
Paigaldamiseks kasuta pip’i:
pip install podman-compose
YAML-failid on enamasti ühilduvad Docker Compose’iga.
Käivita kõik teenused taustal:
podman-compose up -d
Nii saad kiiresti taasluua arendus- või testkeskkonna.
Muud kasulikud käsud ja nõuanded
Piltide puhastamine
podman system prune -a
Kustutab kasutamata pildid ja konteinerid – vabastab salvestusruumi.
Käsu automaatne lõpetamine (bash/zsh)
Podmani käsulõpetusskripti saab paigaldada:
sudo apt install podman-docker
See võimaldab kasutada käsulõpetust nagu Dockeril, parandades töövoogu.
7. Dockerilt Podmanile ülemineku juhend
Miks Dockerilt Podmanile üle minna?
Docker on olnud aastaid konteineritehnoloogia sünonüüm, kuid viimastel aastatel on paljud kolinud Podmani juurde tänu selle kergusele ja turvalisusele. Red Hat Enterprise Linux (RHEL) ja Fedora on Dockerist loobunud ning kasuks võtnud Podmani, mis omakorda kiirendab üleminekut.
Selles peatükis selgitatakse kuidas sujuvalt üle minna Dockerilt Podmanile.
Käsurea ühilduvus Dockeriga
Podman on kõrge käsurea ühilduvusega, võimaldades enamiku Docker-käskudest otse üle kanda:
Docker | Podman |
---|---|
docker build -t myapp . | podman build -t myapp . |
docker run -it myapp | podman run -it myapp |
docker images | podman images |
docker ps | podman ps |
CLI kasutuskogemus jääb samaks, mis teeb ülemineku lihtsaks.
Täielik ühilduvus podman-docker paketiga
Kui olemasolevad skriptid või CI/CD töövood kasutavad “docker” käsku, saab podman-docker
paketiga kasutada Podmani Docker-käskudega:
sudo apt install podman-docker
See loob sümboolse lingi “docker” käsule, mis tegelikult kutsub Podmani:
which docker
# → /usr/bin/docker → podman sümboolne link
Nii saab olemasolevad Docker-skriptid kasutada Podmaniga ilma muudatusteta.
docker-compose alternatiiv: podman-compose
Mitme konteineri teenuste jaoks saab kasutada podman-compose
. See tõlgendab docker-compose.yml
faile Podmani jaoks.
Kuigi ühilduvus on kõrge, võivad mõned Compose-valikud või käitumised veidi erineda:
- Mõned
depends_on
tüüpi valikud võivad olla piiratud või erinevalt käituda - Sündmuslogide ja health check’i käitumine võib olla erinev
Lihtsamate projektide korral on üleminek üldjuhul probleemivaba.
Piltide ja mahuandmete üleviimine
Kui soovid kasutada Dockeris loodud pilte Podmaniga, ei pääse Podman automaatselt Dockeriga jagatud lokaalsetele piltidele ligi. Tee üks järgmistest:
Variant 1: Tõmba pilt uuesti Podmanis
podman pull ubuntu:22.04
Variant 2: Ekspordi Dockerist, impordi Podmanisse
# Dockerist eksport
docker save myimage > myimage.tar
# Podmaniga import
podman load < myimage.tar
See võimaldab kasutada Dockeris loodud pilte ka Podmanis.
Muud tähelepanekud
- Rootless toe erinevus: Docker vajab tavaliselt root’i, Podmanil on rootless standardis
- Demonistruktuuri erinevus: Podman on demonita, seega erineb taustaprotsesside haldus
- Logide ja andmete salvestamise koht võib olla erinev – kontrolli seadeid üleminekul
8. Korduma kippuvad küsimused (KKK)
K1. Mis vahe on Podmanil ja Dockeril?
V1. Peamine erinevus on see, et Podman töötab demonita (ei vaja taustaprotsessi). Tänu sellele on see kergem ja turvalisem. Lisaks toetab Podman rootless-režiimi, mis lubab tavakasutajal konteinereid hallata. CLI on väga sarnane Dockeriga.
K2. Kas Dockerfile ja Containerfile erinevad?
V2. Funktsionaalselt ei ole vahet. Mõlemad kirjeldavad, kuidas konteineripilt ehitatakse, ning süntaks on sama. Podmani ja OCI projektides kasutatakse tihti neutraalsemat nime “Containerfile”, kuid tegelikult võib kasutada mõlemat.
K3. Kas Podman toetab Docker Compose’i?
V3. Otsest tuge pole, kuid podman-compose
võimaldab kasutada Docker Compose YAML-faile Podmani keskkonnas. Osadel valikutel võib olla piiranguid, seega keerukate projektide puhul testi eelnevalt.
K4. Kas Podman töötab stabiilselt Ubuntu’s?
V4. Jah, Ubuntu 20.04 LTS ja uuemates versioonides töötab Podman hästi. Paigaldus on lihtne läbi ametliku repositooriumi või vajadusel PPA kaudu uusima versiooni jaoks.
K5. Kas rootless-režiimis on piiranguid?
V5. Rootless-režiimis on mõned piirangud, näiteks privilegeeritud toimingud ja pordid alla 1024. Neid saab enamasti lahendada portide edasi suunamisega ning igapäevaste vajaduste jaoks on rootless-režiim piisav.
K6. Kas Podmaniga saab tõmmata samu pilte mis Docker Hubis?
V6. Jah, Podman kasutab vaikimisi Docker Hub’i. Mõnel juhul tuleb pildi nimi ja nimetus (namespace) täpselt määrata:
podman pull docker.io/library/ubuntu
Podman toetab ka Quay.io, GitHub Container Registry jms repositooriume.
K7. Kas Podman sobib tootmiskeskkonda?
V7. Jah, Podmanil on Kubernetes ühilduvad Pod-funktsioonid ja systemd tugi. See sobib eriti hästi kõrgete turvanõuetega keskkondadesse. Red Hat Enterprise Linux ja Fedora kasutavad Podmani vaikimisi ning kogemusi suurte projektidega on rohkelt.