Kif Immaniġġja l-Kontenituri billi tuża Podman u Skopeo f'RHEL 8


Waħda mill-isfidi li ffaċċjaw l-iżviluppaturi fil-passat hija li l-applikazzjonijiet jaħdmu b'mod affidabbli f'diversi ambjenti tal-kompjuters. Ħafna drabi, l-applikazzjonijiet ma ħadmux kif mistenni jew iltaqgħu ma 'żbalji u fallew għal kollox. U hemmhekk twieled il-kunċett ta’ containers.

X'inhuma l-Immaġni tal-Kontenituri?

Immaġini tal-kontejners huma fajls statiċi li jintbagħtu b'kodiċi eżekutibbli li jaħdem f'ambjent iżolat. Immaġini ta' kontenitur tinkludi libreriji tas-sistema, dipendenzi u settings oħra tal-pjattaforma meħtieġa mill-applikazzjoni biex taħdem f'ambjenti diversi.

Red Hat Linux jipprovdi sett ta’ għodod ta’ kontenitur utli li tista’ tisfrutta biex taħdem direttament ma’ kontenituri tal-Linux billi tuża kmandi docker li jeħtieġu. Dawn jinkludu:

  • Podman – Din hija magna tal-kontejners daemon inqas għat-tħaddim u l-ġestjoni tal-kontenituri OCI fil-modalità root jew bla għeruq. Podman huwa simili għal Docker u għandu l-istess għażliet ta 'kmand ħlief li Docker huwa daemon. Tista' tiġbed, tmexxi u timmaniġġja l-immaġini tal-kontejners billi tuża podman bl-istess mod bħalma tagħmel b'Docker. Podman jiġi b'ħafna karatteristiċi avvanzati, jintegra bis-sħiħ mas-sistemi, u joffri appoġġ għall-utent Namespace li jinkludi t-tħaddim ta' kontenituri mingħajr il-ħtieġa ta' utent root.
  • Skopeo: Din hija għodda tal-linja tal-kmand użata biex tikkopja immaġini ta' kontenituri minn reġistru għal ieħor. Tista' tuża Skopeo biex tikkopja immaġini lejn u minn host partikolari kif ukoll tikkopja immaġini għal reġistru jew ambjent ta' kontenitur ieħor. Apparti milli tikkopja immaġini, tista' tużaha biex tispezzjona immaġini minn diversi reġistri u tuża firem biex toħloq u tivverifika immaġini.
  • Buildah: Dan huwa sett ta' għodod tal-linja tal-kmand użati għall-ħolqien u l-ġestjoni ta' immaġini OCI tal-kontejners bl-użu ta' fajls Docker.

F'dan l-artikolu, se niffukaw fuq il-Ġestjoni tal-kontenituri bl-użu ta' podman u Skopeo.

Tiftix ta' Stampi ta' Kontenitur minn Reġistru Remot

Il-kmand tat-tfittxija tal-podman jippermettilek li tfittex reġistri remoti magħżula għal stampi tal-kontejners. Il-lista default tar-reġistri hija definita fil-fajl registries.conf li jinsab fid-direttorju /etc/containers/.

Ir-reġistri huma definiti minn 3 taqsimiet.

  • [registries.search] – Din it-taqsima tispeċifika r-reġistri awtomatiċi li podman jista’ jfittex immaġini tal-kontejners. Hija tfittex l-immaġni mitluba fir-reġistri registry.access.redhat.com, registry.redhat.io, u docker.io.

  • [registries.insecure]– Din it-taqsima tispeċifika reġistri li ma jimplimentawx encryption TLS jiġifieri reġistri mhux sikuri. B'mod awtomatiku, l-ebda daħliet ma huma speċifikati.

  • [registries.block] – Dan jimblokka jew jiċħad l-aċċess għar-reġistri speċifikati mis-sistema lokali tiegħek. B'mod awtomatiku, l-ebda daħliet ma huma speċifikati.

Bħala utent regolari (mhux root) li jħaddem il-kmand tal-podman, tista' tiddefinixxi l-fajl registries.conf tiegħek fid-direttorju tad-dar tiegħek ($HOME/.config/containers/registries.conf) biex tegħleb is-settings tas-sistema kollha.

Hekk kif tispeċifika r-reġistri, żomm f'moħħok dan li ġej:

  • Kull reġistru għandu jkun magħluq bi kwotazzjonijiet singoli.
  • Ir-reġistri jistgħu jiġu speċifikati bl-użu ta' isem tal-host jew indirizz IP.
  • Jekk jiġu speċifikati reġistri multipli, allura għandhom ikunu separati b'virgoli.
  • Jekk reġistru juża port mhux standard – jew port ports TCP 443 għal sigur u 80 għal mhux sigur, – in-numru tal-port għandu jiġi speċifikat flimkien mal-isem tar-reġistru eż. registry.example.com:5566.

Biex tfittex reġistru għal immaġini ta' kontenitur billi tuża s-sintassi:

# podman search registry/container_image

Pereżempju, biex tfittex immaġni Redis fir-reġistru registry.redhat.io, invoka l-kmand:

# podman search registry.redhat.io/redis

Biex tfittex immaġini tal-kontejners MariaDB run.

# podman search registry.redhat.io/mariadb

Biex tikseb deskrizzjoni elaborata ta 'immaġni tal-kontenitur, uża l-għażla --no-trunc qabel l-isem tal-immaġni tal-kontenitur mir-riżultati li tikseb. Pereżempju, se nippruvaw niksbu deskrizzjoni dettaljata tal-immaġni tal-kontenitur MariaDB kif muri:

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

Ġbid ta' Stampi ta' Kontenitur

Il-ġbid jew l-irkupru ta' immaġini ta' kontenituri minn reġistru remot jeħtieġ li l-ewwel tivverifika qabel kull ħaġa oħra. Pereżempju, biex tirkupra l-immaġni tal-kontenitur MariaDB, l-ewwel idħol fir-reġistru Redhat:

# podman login

Ipprovdi l-username u l-password tiegħek u agħfas ‘ENTER’ fuq it-tastiera tiegħek. Jekk kollox imur tajjeb, għandek tirċievi messaġġ ta 'konferma li l-login mar-reġistru kien ta' suċċess.

Login Succeeded!

Issa, tista 'tiġbed l-immaġni billi tuża s-sintassi murija:

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

Il-<registry> tirreferi għall-host jew reġistru remot li jipprovdi repożitorju ta' immaġini tal-kontejners fuq it-TCP <port>. Il-<namespace> u l-<name> kollettivament jispeċifikaw immaġini tal-kontenitur ibbażata fuq il-<namespace> fir-reġistru. Fl-aħħarnett, l-għażla <tag> tispeċifika l-verżjoni tal-immaġni tal-kontenitur. Jekk l-ebda waħda ma tkun speċifikata, tintuża t-tikketta default - l-aktar tard.

Huwa dejjem rakkomandat li żżid reġistri ta 'fiduċja, jiġifieri dawk li jipprovdu encryption u ma jippermettux lill-utenti anonimi li jbid kontijiet b'ismijiet każwali.

Biex tiġbed l-immaġni MariaDB, mexxi l-kmand:

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

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

Għal immaġini ta' kontenituri sussegwenti pull, m'hemmx bżonn ta' dħul ieħor peress li inti diġà awtentikat. Biex tiġbed immaġni ta' kontenitur Redis, sempliċement mexxi:

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

Li Elenkar Stampi tal-Kontenitur

Ladarba tkun lest tiġbed l-immaġini, tista 'tara l-immaġini li jeżistu bħalissa fuq il-host tiegħek billi tħaddem il-kmand tal-immaġini podman.

# podman images

Spezzjonar Stampi tal-Kontenitur

Qabel ma tħaddem kontenitur, dejjem tkun idea tajba li tinvestiga l-immaġni u tifhem x'tagħmel. Il-kmand ta 'l-ispezzjoni tal-podman jistampa baħar ta' metadejta dwar il-kontenitur bħall-OS u l-Arkitettura.

Biex tispezzjona immaġini, ħaddem il-kmand tal-inspect podman segwit mill-ID tal-immaġni jew ir-repożitorju.

# podman inspect IMAGE ID
OR
# podman inspect REPOSITORY

Fl-eżempju hawn taħt, qed nispezzjonaw il-kontenitur MariaDB.

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

Biex tiġbed metadejta speċifika għal kontenitur għaddi l-għażla --format segwita mill-metadejta u l-identità tal-kontenitur ( ID tal-Immaġini jew isem ).

Fl-eżempju hawn taħt, qed nirkupraw informazzjoni dwar l-arkitettura u d-deskrizzjoni tal-kontenitur bażi RHEL 8 li jaqa 'taħt it-taqsima Tikketti.

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

Biex tispezzjona immaġni remota minn reġistru ieħor, uża l-kmand tal-ispezzjoni skopeo. Fl-eżempju hawn taħt, qed nispezzjonaw immaġni init RHEL 8 ospitata fuq Docker.

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

Immarkar Stampi tal-Kontenituri

Kif forsi innotajt, l-ismijiet tal-immaġini huma ġeneralment ta’ natura ġenerika. Pereżempju, l-immaġni redis hija ttikkettjata:

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

It-tikkettar tal-immaġini jagħtihom isem aktar intuwittiv biex jifhmu aħjar dak li fihom. Bl-użu tal-kmand tat-tikketta podman, tista 'toħloq tikketta tal-immaġni li essenzjalment hija psewdonimu għal isem tal-immaġni li jinkludi partijiet differenti.

Dawn huma:

registry/username/NAME:tag

Pereżempju, biex nibdlu l-isem ġeneriku tal-immaġni Redis li għandha ID ta '646f2730318c, aħna se nwettqu l-kmand:

# podman tag 646f2730318c myredis

Biex iżżid tikketta fl-aħħar ehmeż kolon sħiħ segwit min-numru tat-tikketta:

# podman tag 646f2730318c myredis:5.0

Mingħajr ma jiżdied in-numru tat-tikketta, se jiġi assenjat l-attribut l-aktar tard.

Stampi tal-Kontenitur tat-Tmexxija

Biex tmexxi kontenitur, uża l-kmand tal-ġirja podman. Pereżempju:

# podman run image_id

Biex tħaddem kontenitur fis-skiet fl-isfond bħala servizz daemon uża l-għażla -d kif muri.

# podman run -d image_id

Pereżempju, biex tħaddem l-immaġni redis bl-ID 646f2730318c, aħna se nitolbu l-kmand:

# podman run -d 646f2730318c

Jekk qed tħaddem kontenitur ibbażat fuq sistema operattiva bħal immaġni bażi RHEL 8, tista 'tikseb aċċess għall-qoxra billi tuża d-direttiva -it. L-għażla -i toħloq sessjoni interattiva filwaqt li l--t tbid sessjoni terminali. L-għażla --name tistabbilixxi l-isem tal-kontenitur għal mybash filwaqt li hija l-id tal-immaġni ecbc6f53bba0 tal-immaġni bażi.

# podman run -it --name=mybash ecbc6f53bba0

Minn hemm 'il quddiem, tista' tmexxi kwalunkwe kmandi tal-qoxra. Fl-eżempju hawn taħt, qed nivverifikaw il-verżjoni tal-OS tal-immaġni tal-kontenitur.

# cat /etc/os-release

Biex toħroġ mill-kontenitur, sempliċement invoka l-kmand tal-ħruġ.

# exit

Ladarba l-kontenitur jinħareġ, jieqaf awtomatikament. Biex terġa’ tibda l-kontenitur, uża l-kmand tal-bidu tal-podman bil-bandiera -ai kif muri.

# podman start -ai mybash

Għal darb'oħra, dan jagħtik aċċess għall-qoxra.

Elenkar ta' Stampi ta' Kontenitur li Tmexxi

Biex telenka l-kontenituri li qed jaħdmu bħalissa, uża l-kmand podman ps kif muri.

# podman ps

Biex tara l-kontenituri kollha inklużi dawk li jkunu ħarġu wara li tħaddem, uża l-kmand:

# podman ps -a

Ikkonfigura l-Immaġni tal-Kontenitur biex Auto Start Taħt is-Servizz tas-System

F'din it-taqsima, aħna niffukaw fuq kif kontenitur jista 'jiġi kkonfigurat biex jaħdem direttament fuq sistema RHEL bħala servizz systemd.

L-ewwel, ikseb l-immaġni preferuta tiegħek. F'dan il-każ, ġbidna l-immaġni Redis minn docker hub:

# podman pull docker.io/redis

Jekk għandek SELinux taħdem fis-sistema tiegħek, għandek bżonn tattiva l-boolean container_manage_cgroup biex tħaddem kontenituri bis-systemd.

# setsebool -p container_manage_cgroup on

Minn hemm 'il quddiem, mexxi l-immaġni tal-kontenitur fl-isfond u assenjaha għall-isem tal-immaġni preferut tiegħek. F'dan l-eżempju, semmejna l-immaġni tagħna redis_server u mmappajna l-port 6379 mill-kontenitur għall-host RHEL 8 tagħna

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

Sussegwentement, se noħolqu fajl tal-konfigurazzjoni tal-unità systemd għal redis fid-direttorju /etc/systemd/system/.

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

Paste l-kontenut hawn taħt fil-fajl.

[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

Issejvja u oħroġ mill-fajl.

Sussegwentement, ikkonfigura l-kontenitur biex jibda awtomatikament mal-bootup.

# systemctl enable redis-container.service

Sussegwentement, ibda l-kontenitur u vverifika l-istatus ta 'tħaddim tiegħu.

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

Ikkonfigura Ħażna Persistenti għal Stampi tal-Kontenitur

Meta tħaddem kontenituri, huwa prudenti li tikkonfigura ħażna esterna persistenti fuq il-host. Dan jipprovdi backup f'każ li l-kontenitur jiġġarraf jew jitneħħa aċċidentalment.

Biex tippersisti d-dejta, se nimmappjaw direttorju li jinsab fl-ospitant għal direttorju ġewwa l-kontenitur.

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

L-għażla --privileged tgħaddi meta SELinux jiġi ssettjat biex jinforza. L-għażla -v tispeċifika l-volum estern li jinsab fuq il-host. Il-volum tal-kontenitur hawnhekk huwa d-direttorju /mnt.

Ladarba jkollna aċċess għall-qoxra, se noħolqu fajl kampjun testing.txt fid-direttorju /mnt kif muri.

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

Imbagħad noħorġu mill-kontenitur u niċċekkjaw jekk il-fajl jeżistix fil-ħażna esterna li tirrisjedi fuq l-ospitant

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

Output ⇒ Dan jittestja ħażna esterna persistenti.

Waqfien u Tneħħija ta' Kontenituri

Ladarba tkun lest it-tħaddim tal-kontenitur tiegħek, tista 'twaqqafha billi tuża l-kmand tal-waqfien tal-podman segwit mill-kontenitur-id li tista' tikseb mill-kmand tal-podman ps.

# podman stop container-id

Biex tneħħi l-kontenituri li m'għadx għandek bżonn, l-ewwel, kun żgur li twaqqafha u mbagħad tinvoka l-kmand podman rm segwit mill-id tal-kontenitur jew l-isem bħala għażla.

# podman rm container-id

Biex tneħħi kontenituri multipli f'daqqa fi kmand wieħed, speċifika l-ids tal-kontenituri separati bi spazju.

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

Biex tneħħi l-kontenituri kollha tiegħek, mexxi l-kmand:

# podman rm -a

Tneħħi Immaġni

Biex tneħħi immaġni, l-ewwel, kun żgur li l-kontenituri kollha miġbura mill-immaġini jitwaqqfu u jitneħħew kif diskuss fis-sub-suġġett preċedenti.

Sussegwentement, ipproċedi u mexxi l-kmand tal-podman -rmi segwit mill-ID tal-immaġni kif muri:

# podman -rmi image-id

Konklużjoni

Dan jagħlaq dan il-kapitolu dwar il-ġestjoni u x-xogħol ma 'kontenituri f'RHEL 8. Nittamaw li din il-gwida pprovdiet fehim deċenti tal-kontenituri u kif tista' tinteraġixxi u timmaniġġjahom fis-sistema RHEL tiegħek billi tuża podman u Skopeo.