RHEL 8-de Podman we Skopeo ulanyp konteýnerleri nädip dolandyrmaly


Geçmişde işläp düzüjileriň ýüzbe-ýüz bolýan kynçylyklarynyň biri, köp sanly hasaplaýyş gurşawynda ygtybarly işlemek üçin programmalary almakdyr. Köplenç programmalar garaşylşy ýaly işlemeýärdi ýa-da ýalňyşlyklar ýüze çykýardy we düýbünden şowsuzdy. Konteýnerler düşünjesi dörän ýeri.

Konteýner suratlary näme?

Konteýner şekilleri, izolirlenen gurşawda işleýän ýerine ýetirip bolýan kod bilen iberilýän statiki faýllardyr. Konteýner şekili, dürli gurşawda işlemek üçin programma zerur bolan ulgam kitaphanalaryny, garaşlylygy we beýleki platforma sazlamalaryny öz içine alýar.

Red Hat Linux, doker buýruklaryny talap edip, gönüden-göni Linux konteýnerleri bilen işlemek üçin ulanyp boljak peýdaly konteýner gurallarynyň toplumyny hödürleýär. Bular öz içine alýar:

  • Podman - OCI konteýnerlerini kök ýa-da köksiz re inimde dolandyrmak we dolandyrmak üçin daemon az konteýner hereketlendirijisi. Podman Docker-e meňzeýär we Docker-iň daemon bolanyndan başga birmeňzeş buýruk opsiýalary bar. Konteýner şekillerini Docker-de bolşy ýaly podman ulanyp, çekip, dolandyryp we dolandyryp bilersiňiz. “Podman” köp sanly ösen aýratynlyklar bilen üpjün edilýär, ulgamlar bilen doly birleşýär we kök ulanyjy zerurlygy bolmazdan işleýän konteýnerleri öz içine alýan ulanyjy at giňişligini goldaýar.
  • Skopeo: Konteýner şekillerini bir reýestrden beýlekisine göçürmek üçin ulanylýan buýruk setiri guraly. Skopeo-dan belli bir öý eýesine suratlary göçürmek, suratlary başga bir konteýner registrine ýa-da daşky gurşawa göçürip bilersiňiz. Suratlary göçürmekden başga-da, dürli registrlerden şekilleri barlamak we suratlary döretmek we barlamak üçin gollary ulanyp bilersiňiz.
  • Buildah: Bu, Docker faýllaryny ulanyp, konteýner OCI şekillerini döretmek we dolandyrmak üçin ulanylýan buýruk setir gurallarynyň toplumy.

Bu makalada podman we Skopeo ulanyp konteýnerleri dolandyrmaga üns bereris.

Uzakdan registrden konteýner suratlaryny gözlemek

Podman gözleg buýrugy, konteýner şekilleri üçin saýlanan uzakdaky registrleri gözlemäge mümkinçilik berýär. Hasaba alyş sanawlarynyň deslapky sanawy/etc/konteýnerler/katalogda ýerleşýän registries.conf faýlynda kesgitlenendir.

Hasaba alyş ýazgylary 3 bölüm bilen kesgitlenýär.

  • [registries.search] - Bu bölümde podmanyň konteýner şekillerini gözläp bilýän deslapky registrleri kesgitlenýär. Soralýan suraty registry.access.redhat.com, registry.redhat.io we docker.io registrlerinde gözleýär.

  • Düzgüne görä, ýazgylar görkezilmeýär.

  • [registries.block] - Bu, ýerli ulgamyňyzdan görkezilen registrlere girmegi bloklaýar ýa-da ret edýär. Düzgüne görä, ýazgylar görkezilmeýär.

“Podman” buýrugyny işleýän yzygiderli (kök däl) ulanyjy hökmünde, ulgam giňişligindäki sazlamalary ýok etmek üçin öz kataloglaryňyzdaky ($HOME/.config/konteýnerler/registries.conf) öz registries.conf faýlyňyzy kesgitläp bilersiňiz.

Hasaba alyş sanawlaryny kesgitläniňizde, aşakdakylary ýadyňyzdan çykarmaň:

  • Her reýestr ýekeje sitata bilen gurşalan bolmaly.
  • Hasaba alyş atlaryny ýa-da IP adresini ulanyp bellige alnyp bilner.
  • Birnäçe registr görkezilen bolsa, olary dykgat bilen bölmeli.
  • Hasaba alyş kitaby standart däl port ulanýan bolsa - ýa-da TCP porty 443, howpsyzlyk üçin 80 port bolsa - port belgisi bellige alyş ady bilen birlikde görkezilmelidir. registr.example.com:5566.

Sintaksis ulanyp konteýner şekili üçin registr gözlemek:

# podman search registry/container_image

Mysal üçin, registry.redhat.io registrinde Redis şekilini gözlemek üçin buýrugy çagyryň:

# podman search registry.redhat.io/redis

MariaDB konteýner şekilini gözlemek üçin.

# podman search registry.redhat.io/mariadb

Konteýner şekiliniň jikme-jik beýanyny almak üçin, netijeleriňizden konteýner şekiliniň adynyň öňünde --no-trunc opsiýasyny ulanyň. Mysal üçin, MariaDB konteýner şekiliniň görkezilişi ýaly jikme-jik düşündiriş almaga synanyşarys:

# podman search --no-trunc registry.redhat.io/rhel8/mariadb-103

Konteýner suratlaryny çekmek

Konteýner şekillerini uzakdaky reýestrden çekmek ýa-da almak, ilki bilen başga bir zatdan öň tassyklamagy talap edýär. Mysal üçin, MariaDB konteýner şekilini almak üçin ilki Redhat registrine giriň:

# podman login

Ulanyjy adyňyzy we parolyňyzy beriň we klawiaturadaky ENTER düwmesine basyň. Allhli zat gowy bolsa, reýestre girmegiň üstünlikli bolandygyny tassyklaýan habar almaly.

Login Succeeded!

Indi görkezilen sintaksisiň kömegi bilen şekili çekip bilersiňiz:

# podman pull <registry>[:<port>]/[<namespace>/]<name>:<tag>

<registry> TCP <port> -da konteýner şekilleriniň ammaryny üpjün edýän uzakdaky hosta ýa-da registrlere degişlidir. <namespace> we <name> reýestrdäki <namespace> esasly konteýner şekilini bilelikde görkezýärler. Netijede, <tag> opsiýasy konteýner şekiliniň wersiýasyny kesgitleýär. Hiç biri görkezilmedik bolsa, deslapky bellik - iň soňky - ulanylýar.

Elmydama ynamdar registrleri goşmak maslahat berilýär, şifrlemäni üpjün edýän we näbelli ulanyjylara tötänleýin atlar bilen hasap açmagyna rugsat bermeýänler.

MariaDB şekilini çekmek üçin buýrugy işlediň:

# podman pull registry.redhat.io/rhel8/mariadb-103

  • <registry> - registry.redhat.io
  • <namespace> - rhel8
  • <name> - MariaDB
  • <tag> - 103

Ondan soňky konteýner şekilleri çekmek üçin, eýýäm tassyklananyňyzdan soň girmek hökman däl. Redis konteýner şekilini çekmek üçin işlediň:

# podman pull registry.redhat.io/rhscl/redis-5-rhel7

Konteýner suratlarynyň sanawy

Suratlary çekip bolanyňyzdan soň, podman şekilleri buýrugyny işledip, öý eýesiňizde bar bolan suratlary görüp bilersiňiz.

# podman images

Konteýner suratlaryny barlamak

Konteýner işlemezden ozal şekili barlamak we näme edýändigine düşünmek gowy zat. Podman barlag buýrugy, OS we Arhitektura ýaly konteýner hakda metadata deňzini çap edýär.

Suraty barlamak üçin podman barlag buýrugyny işlediň, soňra bolsa surat belgisi ýa-da ammar bar.

# podman inspect IMAGE ID
OR
# podman inspect REPOSITORY

Aşakdaky mysalda, MariaDB konteýnerini barlaýarys.

# podman inspect registry.redhat.io/rhel8/mariadb-103

Konteýner üçin belli bir meta-maglumaty çekmek üçin --format opsiýasyndan soň metadata we konteýner şahsyýeti (Surat ID ýa-da ady) geçiň.

Aşakdaky mysalda, Bellikler bölümine girýän RHEL 8 esasy konteýneriň arhitekturasy we beýany barada maglumat alýarys.

# podman inspect --format=’{{.Labels.architecture}}’ image ID
# podman inspect --format=’{{.Labels.description}}’ image ID

Başga bir reýestrden uzakdaky suraty barlamak üçin skopeo inspekt buýrugyny ulanyň. Aşakdaky mysalda, Docker-de ýerleşdirilen RHEL 8 init şekilini barlaýarys.

# skopeo inspect docker://registry.redhat.io/rhel8-beta/rhel-init

Konteýner suratlaryny bellemek

Belläp geçişiňiz ýaly, şekil atlary adatça umumydyr. Mysal üçin, redis şekili bellik edilýär:

registry.redhat.io/rhscl/redis-5-rhel7

Suratlary bellik etmek, içindäki zatlara has gowy düşünmek üçin has içgin at berýär. “Podman” belligi buýrugyny ulanyp, dürli bölekleri öz içine alýan şekil adyna lakamly şekil belligini döredip bilersiňiz.

Bular:

registry/username/NAME:tag

Mysal üçin, 646f2730318c belgisi bolan Redis şekiliniň umumy adyny üýtgetmek üçin buýrugy ýerine ýetireris:

# podman tag 646f2730318c myredis

Ahyrynda bellik goşmak üçin bellik belgisiniň yzyndan doly sütün goşuň:

# podman tag 646f2730318c myredis:5.0

Bellik belgisini goşmazdan, diňe atribut iň soňky bellener.

Konteýner suratlaryny işletmek

Konteýner işletmek üçin podman run buýrugyny ulanyň. Mysal üçin:

# podman run image_id

Konteýni fonda arkaýyn işletmek üçin, daemon hyzmaty hökmünde görkezilişi ýaly -d opsiýasyny ulanyň.

# podman run -d image_id

Mysal üçin, redis şekilini ID 646f2730318c bilen işletmek üçin buýrugy ulanarys:

# podman run -d 646f2730318c

RHEL 8 esasy surat ýaly operasiýa ulgamyna esaslanýan konteýner işleýän bolsaňyz, -it direktiwasyny ulanyp, gabyga girip bilersiňiz. -i opsiýasy interaktiw sessiýa döredýär, -t terminal sessiýasyny döredýär. --name opsiýasy konteýneriň adyny mybash-a düzýär, esasy şekiliň ecbc6f53bba0 şekil ID-si.

# podman run -it --name=mybash ecbc6f53bba0

Ondan soň islendik gabyk buýruklaryny işledip bilersiňiz. Aşakdaky mysalda, konteýner şekiliniň OS wersiýasyny barlaýarys.

# cat /etc/os-release

Konteýnerden çykmak üçin diňe çykyş buýrugyny çagyryň.

# exit

Konteýner çykandan soň awtomatiki usulda saklanýar. Konteýni täzeden başlamak üçin podman başlangyç buýrugyny görkezilişi ýaly -ai baýdagy bilen ulanyň.

# podman start -ai mybash

Againene bir gezek bu gabyga girmäge mümkinçilik berýär.

Işleýän konteýner suratlarynyň sanawy

Häzirki wagtda işleýän konteýnerleri sanamak üçin podman ps buýrugyny görkezilişi ýaly ulanyň.

# podman ps

Containhli gap-gaçlary, şol sanda işledilenden soň çykanlary görmek üçin buýrugy ulanyň:

# podman ps -a

Konteýner suratlaryny “Systemd Service” -iň awto başlangyjy üçin sazlaň

Bu bölümde, RHEL ulgamynda systemd hyzmaty hökmünde gönüden-göni işlemek üçin konteýneriň nädip düzülip biljekdigine ünsi jemleýäris.

Ilki bilen, halaýan suratyňyzy alyň. Bu ýagdaýda Redis şekilini doker merkezinden çykardyk:

# podman pull docker.io/redis

Ulgamyňyzda SELinux işleýän bolsa, systemd bilen konteýnerleri işletmek üçin konteýner_manage_cgroup booleany işjeňleşdirmeli.

# setsebool -p container_manage_cgroup on

Ondan soň konteýner şekilini fonda işlediň we islän suratyňyzyň adyna belläň. Bu mysalda, redis_server suratymyza at dakdyk we konteýnerden RHEL 8 öý eýesine 6379 portuny kartalaşdyrdyk.

# podman run -d --name redis_server -p 6379:6379 redis

Indiki,/etc/systemd/system/katalogda redis üçin systemd birlik konfigurasiýa faýly dörederis.

# vim /etc/systemd/system/redis-container.service

Aşakdaky mazmuny faýla goýuň.

[Unit]
Description=Redis container

[Service]
Restart=always
ExecStart=/usr/bin/podman start -a redis_server
ExecStop=/usr/bin/podman stop -t 2 redis_server

[Install]
WantedBy=local.target

Faýly ýazdyryň we çykyň.

Ondan soň, ýüklemäni awtomatiki başlamak üçin konteýner düzüň.

# systemctl enable redis-container.service

Ondan soň, konteýner işe başlaň we işleýiş ýagdaýyny barlaň.

# systemctl start redis-container.service
# systemctl status redis-container.service

Konteýner suratlary üçin dowamly ammary sazlaň

Konteýnerler işledilende, öý eýesinde dowamly daşarky ammar düzmek akyllydyr. Konteýner ýykylsa ýa-da tötänleýin aýrylsa, ätiýaçlyk nusgasyny üpjün edýär.

Maglumatlary dowam etdirmek üçin, hostda ýerleşýän bir bukjany konteýneriň içindäki kataloga karta etmekçi.

$ podman run --privileged -it -v /var/lib/containers/backup_storage:/mnt registry.redhat.io/ubi8/ubi /bin/bash

SELinux ýerine ýetirilende --privileged opsiýasy geçýär. -v opsiýasy öý eýesinde ýerleşýän daşarky göwrümi kesgitleýär. Bu ýerdäki konteýneriň göwrümi/mnt bukjasydyr.

Gabykdan girenimizden soň, görkezilişi ýaly/mnt katalogynda test.txt faýl dörederis.

$ echo "This tests persistent external storage" > /mnt/testing.txt

Soňra konteýnerden çykarys we faýlyň öý eýesinde ýaşaýan daşarky ammarda bardygyny ýa-da ýokdugyny barlarys

# exit
# cat /var/lib/containers/backup_storage/testing.txt

Çykyş ⇒ Bu dowamly daşarky ammary synap görýär.

Konteýnerleri duruzmak we aýyrmak

Konteýneriňizi işledeniňizden soň, podman ps buýrugyndan alyp boljak konteýner-id bilen podman stop buýrugyny ulanyp, ony saklap bilersiňiz.

# podman stop container-id

Indi zerur däl konteýnerleri aýyrmak üçin ilki bilen ony saklaň we podman rm buýrugyny, soň bolsa konteýner idini ýa-da adyny saýlaň.

# podman rm container-id

Bir buýrukda birnäçe konteýner aýyrmak üçin boşluk bilen bölünen konteýner ID-lerini görkeziň.

# podman rm container-id-1 container-id-2 container-id-3

Konteýnerleriňizi arassalamak üçin buýrugy işlediň:

# podman rm -a

Suraty aýyrmak

Bir suraty aýyrmak üçin, ilki bilen, öňki mowzukda aýdylyşy ýaly, suratlardan dörän gaplaryň hemmesiniň saklanmagyna we aýrylmagyna göz ýetiriň.

Ondan soň, görkezilişi ýaly şekiliň şahsyýetnamasy bilen podman -rmi buýrugyny dowam etdiriň we işlediň:

# podman -rmi image-id

Netije

Bu, RHEL 8-de konteýnerleri dolandyrmak we işlemek baradaky bu bölümi öz içine alýar. Bu gollanma konteýnerlere we podman we Skopeo ulanyp, RHEL ulgamyňyzda nädip täsirleşip we dolandyryp boljakdygyna gowy düşüner diýip umyt edýäris.