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.