Jinsi ya Kudhibiti Vyombo kwa Kutumia Podman na Skopeo katika RHEL 8
Mojawapo ya changamoto ambazo wasanidi programu walikabiliana nazo hapo awali ni kupata programu kufanya kazi kwa uaminifu katika mazingira mengi ya kompyuta. Mara nyingi, programu hazikufanya kazi kama ilivyotarajiwa au zilipata hitilafu na hazikufaulu kabisa. Na hapo ndipo dhana ya makontena ilipozaliwa.
Picha za Kontena ni nini?
Picha za kontena ni faili tuli ambazo husafirishwa na msimbo unaoweza kutekelezeka ambao hutumika katika mazingira ya pekee. Picha ya kontena inajumuisha maktaba za mfumo, vitegemezi na mipangilio mingine ya jukwaa inayohitajika na programu kufanya kazi katika mazingira tofauti.
Red Hat Linux hutoa seti ya zana muhimu za kontena ambazo unaweza kutumia ili kufanya kazi moja kwa moja na vyombo vya Linux kwa kutumia amri zinazohitaji docker. Hizi ni pamoja na:
- Podman - Hii ni injini ya kontena ndogo ya daemon ya kuendesha na kudhibiti vyombo vya OCI katika hali ya mzizi au isiyo na mizizi. Podman ni sawa na Docker na ina chaguzi sawa za amri isipokuwa kwamba Docker ni daemon. Unaweza kuvuta, kukimbia, na kudhibiti picha za kontena ukitumia podman kwa njia sawa na vile ungefanya na Docker. Podman inakuja na vipengele vingi vya kina, inaunganishwa kikamilifu na mifumo, na inatoa usaidizi wa Nafasi ya Jina ya mtumiaji ambayo inajumuisha kuendesha vyombo bila hitaji la mtumiaji wa mizizi.
- Skopeo: Hiki ni zana ya mstari wa amri inayotumika kunakili picha za kontena kutoka kwa sajili moja hadi nyingine. Unaweza kutumia Skopeo kunakili picha kwa na kutoka kwa seva pangishi fulani na vile vile kunakili picha kwenye sajili nyingine ya kontena au mazingira. Kando na kunakili picha, unaweza kuitumia kukagua picha kutoka kwa sajili mbalimbali na kutumia sahihi kuunda na kuthibitisha picha.
- Buildah: Hii ni seti ya zana za mstari wa amri zinazotumika kuunda na kudhibiti picha za kontena za OCI kwa kutumia faili za Docker.
Katika makala hii, tutazingatia Kusimamia vyombo kwa kutumia podman na Skopeo.
Inatafuta Picha za Kontena kutoka kwa Usajili wa Mbali
Amri ya utafutaji ya podman hukuruhusu kutafuta sajili za mbali zilizochaguliwa kwa picha za kontena. Orodha chaguo-msingi ya sajili imefafanuliwa katika faili ya registries.conf iliyoko kwenye saraka /etc/containers/.
Usajili unafafanuliwa na sehemu 3.
- [registries.search] - Sehemu hii inabainisha sajili chaguo-msingi ambazo podman inaweza kutafuta picha za makontena. Hutafuta picha iliyoombwa kwenye registry.access.redhat.com, registry.redhat.io, na sajili za docker.io.
- [registries.insecure]– Sehemu hii inabainisha sajili ambazo hazitekelezi usimbaji fiche wa TLS yaani sajili zisizo salama. Kwa chaguo-msingi, hakuna maingizo yamebainishwa.
- [registries.block] - Hii inazuia au inakataa ufikiaji wa sajili maalum kutoka kwa mfumo wako wa ndani. Kwa chaguo-msingi, hakuna maingizo yamebainishwa.
Kama mtumiaji wa kawaida (asiye na mizizi) anayeendesha amri ya podman, unaweza kufafanua faili yako mwenyewe ya registries.conf kwenye saraka yako ya nyumbani ($HOME/.config/containers/registries.conf) ili kubatilisha mipangilio ya mfumo mzima.
Unapobainisha rejista, kumbuka yafuatayo:
- Kila sajili inapaswa kuambatanishwa na nukuu moja.
- Rejesta zinaweza kubainishwa kwa kutumia jina la mpangishaji au anwani ya IP.
- Ikiwa sajili nyingi zimebainishwa, basi zinapaswa kutengwa kwa koma.
- Kama sajili inatumia lango lisilo la kawaida - ama lango la TCP 443 kwa usalama na 80 kwa usalama, - nambari ya mlango inapaswa kubainishwa pamoja na jina la usajili k.m. registry.example.com:5566.
Kutafuta sajili kwa picha ya chombo kwa kutumia syntax:
# podman search registry/container_image
Kwa mfano, ili kutafuta picha ya Redis kwenye sajili ya registry.redhat.io, omba amri:
# podman search registry.redhat.io/redis
Ili kutafuta taswira ya chombo cha MariaDB endesha.
# podman search registry.redhat.io/mariadb
Ili kupata maelezo ya kina ya picha ya chombo, tumia chaguo la --no-trunc
kabla ya jina la picha ya chombo kutoka kwa matokeo unayopata. Kwa mfano, tutajaribu kupata maelezo ya kina ya picha ya chombo cha MariaDB kama inavyoonyeshwa:
# podman search --no-trunc registry.redhat.io/rhel8/mariadb-103
Kuvuta Picha za Kontena
Kuvuta au kurejesha picha za kontena kutoka kwa sajili ya mbali kunahitaji kwamba uthibitishe kwanza kabla ya kitu kingine chochote. Kwa mfano, ili kupata picha ya chombo cha MariaDB, ingia kwanza kwenye sajili ya Redhat:
# podman login
Toa jina lako la mtumiaji na nenosiri na ugonge 'INGIA' kwenye kibodi yako. Ikiwa kila kitu kitaenda vizuri, unapaswa kupata ujumbe wa uthibitisho kwamba kuingia kwenye Usajili kulifanikiwa.
Login Succeeded!
Sasa, unaweza kuvuta picha kwa kutumia syntax iliyoonyeshwa:
# podman pull <registry>[:<port>]/[<namespace>/]<name>:<tag>
<registry>
inarejelea seva pangishi ya mbali au sajili ambayo hutoa hifadhi ya picha za kontena kwenye TCP <port>
. <namespace>
na <name>
kwa pamoja zinabainisha picha ya chombo kulingana na <namespace>
kwenye sajili. Hatimaye, chaguo la <tag>
hubainisha toleo la picha ya chombo. Ikiwa hakuna iliyotajwa, lebo ya chaguo-msingi - ya hivi karibuni - inatumiwa.
Inapendekezwa kila mara kuongeza sajili zinazoaminika, ambazo ni zile zinazotoa usimbaji fiche na haziruhusu watumiaji wasiojulikana kuibua akaunti zilizo na majina nasibu.
Ili kuvuta picha ya MariaDB, endesha amri:
# podman pull registry.redhat.io/rhel8/mariadb-103
-
<registry>
- registry.redhat.io -
<namespace>
- rhel8 -
<name>
- MariaDB -
<tag>
- 103
Kwa picha za kontena zinazofuata za kuvuta, hakuna kuingia tena kunahitajika kwa kuwa tayari umeidhinishwa. Ili kuvuta picha ya chombo cha Redis, endesha tu:
# podman pull registry.redhat.io/rhscl/redis-5-rhel7
Kuorodhesha Picha za Kontena
Mara tu unapomaliza kuvuta picha, unaweza kutazama picha zilizopo kwa mwenyeji wako kwa kuendesha amri ya picha za podman.
# podman images
Kukagua Picha za Kontena
Kabla ya kuendesha chombo, daima ni wazo nzuri kuchunguza picha na kuelewa kile kinachofanya. Amri ya ukaguzi wa podman huchapisha bahari ya metadata kuhusu kontena kama vile OS na Usanifu.
Ili kukagua picha, endesha amri ya ukaguzi wa podman ikifuatiwa na kitambulisho cha picha au hifadhi.
# podman inspect IMAGE ID OR # podman inspect REPOSITORY
Katika mfano hapa chini, tunakagua chombo cha MariaDB.
# podman inspect registry.redhat.io/rhel8/mariadb-103
Ili kuvuta metadata mahususi ya kontena pitisha chaguo la --format
ikifuatiwa na metadata na utambulisho wa chombo ( Kitambulisho cha picha au jina ).
Katika mfano ulio hapa chini, tunarejesha maelezo kuhusu usanifu na maelezo ya chombo cha msingi cha RHEL 8 ambacho kiko chini ya sehemu ya 'Lebo'.
# podman inspect --format=’{{.Labels.architecture}}’ image ID # podman inspect --format=’{{.Labels.description}}’ image ID
Ili kukagua picha ya mbali kutoka kwa Usajili mwingine, tumia amri ya ukaguzi wa skopeo. Katika mfano ulio hapa chini, tunakagua picha ya RHEL 8 init iliyopangishwa kwenye Docker.
# skopeo inspect docker://registry.redhat.io/rhel8-beta/rhel-init
Kuweka Tagi Picha za Kontena
Kama unavyoweza kuwa umegundua, majina ya picha kawaida huwa ya kawaida. Kwa mfano, picha ya redis imeandikwa:
registry.redhat.io/rhscl/redis-5-rhel7
Kuweka tagi picha huwapa jina angavu zaidi ili kuelewa vyema yaliyomo. Kwa kutumia amri ya lebo ya podman, unaweza kuunda lebo ya picha ambayo kimsingi ni lakabu kwa jina la picha ambalo linajumuisha sehemu tofauti.
Hizi ni:
registry/username/NAME:tag
Kwa mfano, ili kubadilisha jina la jumla la picha ya Redis ambayo ina kitambulisho cha 646f2730318c , tutatekeleza amri:
# podman tag 646f2730318c myredis
Ili kuongeza lebo mwishoni ongeza koloni kamili ikifuatiwa na nambari ya lebo:
# podman tag 646f2730318c myredis:5.0
Bila kuongeza nambari ya lebo, itapewa tu sifa ya hivi punde.
Picha za Kontena zinazoendesha
Ili kuendesha chombo, tumia amri ya kukimbia ya podman. Kwa mfano:
# podman run image_id
Ili kuendesha kontena kimya chini kama huduma ya daemoni tumia chaguo la -d
kama inavyoonyeshwa.
# podman run -d image_id
Kwa mfano, ili kuendesha picha ya redis na ID 646f2730318c, tutaomba amri:
# podman run -d 646f2730318c
Ikiwa unatumia kontena kulingana na mfumo wa uendeshaji kama vile picha ya msingi ya RHEL 8, unaweza kupata ufikiaji wa ganda kwa kutumia maagizo ya -it
. Chaguo la -i
huunda kipindi wasilianifu huku -t
ikianzisha kipindi cha mwisho. Chaguo la --name
huweka jina la chombo kuwa mybash huku ni kitambulisho cha picha cha ecbc6f53bba0 cha picha ya msingi.
# podman run -it --name=mybash ecbc6f53bba0
Baada ya hapo, unaweza kuendesha amri zozote za ganda. Katika mfano ulio hapa chini, tunathibitisha toleo la OS la picha ya chombo.
# cat /etc/os-release
Ili kuondoka kwenye chombo, omba tu amri ya kutoka.
# exit
Mara tu chombo kinapotoka, huacha kiotomatiki. Ili kuanzisha kontena tena, tumia amri ya kuanza kwa podman na alama ya -ai
kama inavyoonyeshwa.
# podman start -ai mybash
Kwa mara nyingine tena, hii inakupa ufikiaji wa ganda.
Kuorodhesha Picha za Kontena zinazoendesha
Ili kuorodhesha vyombo vinavyoendeshwa kwa sasa, tumia amri ya podman ps kama inavyoonyeshwa.
# podman ps
Kuangalia vyombo vyote ikiwa ni pamoja na vile ambavyo vimetoka baada ya kukimbia, tumia amri:
# podman ps -a
Sanidi Picha za Kontena ili Kuanza Kiotomatiki Chini ya Huduma ya Mfumo
Katika sehemu hii, tunaangazia jinsi kontena linaweza kusanidiwa ili kuendeshwa moja kwa moja kwenye mfumo wa RHEL kama huduma ya mfumo.
Kwanza, pata picha unayopendelea. Katika kesi hii, tumechota picha ya Redis kutoka kwa kitovu cha kizimbani:
# podman pull docker.io/redis
Ikiwa una SELinux inayoendesha kwenye mfumo wako, unahitaji kuwezesha chombo_manage_cgroup boolean ili kuendesha vyombo na systemd.
# setsebool -p container_manage_cgroup on
Baada ya hapo, endesha picha ya kontena chinichini na uikabidhi kwa jina lako la picha unalopendelea. Katika mfano huu, tumeita picha yetu redis_server na kuweka bandari 6379 kutoka kwenye kontena hadi mwenyeji wetu wa RHEL 8.
# podman run -d --name redis_server -p 6379:6379 redis
Ifuatayo, tutaunda faili ya usanidi wa kitengo cha mfumo kwa redis kwenye saraka /etc/systemd/system/.
# vim /etc/systemd/system/redis-container.service
Bandika yaliyomo hapa chini kwenye faili.
[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
Hifadhi na uondoke faili.
Ifuatayo, sanidi kontena ili kuanza kiotomatiki kwenye uanzishaji.
# systemctl enable redis-container.service
Ifuatayo, anza kontena na uthibitishe hali yake ya kufanya kazi.
# systemctl start redis-container.service # systemctl status redis-container.service
Sanidi Hifadhi Inayodumu kwa Picha za Kontena
Unapoendesha vyombo, ni busara kusanidi hifadhi ya nje inayoendelea kwenye seva pangishi. Hii hutoa nakala rudufu ikiwa kontena itaanguka au kuondolewa kwa bahati mbaya.
Ili kuendeleza data, tutaweka ramani saraka iliyo katika seva pangishi kwenye saraka ndani ya kontena.
$ podman run --privileged -it -v /var/lib/containers/backup_storage:/mnt registry.redhat.io/ubi8/ubi /bin/bash
Chaguo la --privileged
hupitishwa wakati SELinux imewekwa kutekelezwa. Chaguo la -v
hubainisha sauti ya nje ambayo iko kwenye seva pangishi. Kiasi cha kontena hapa ni saraka ya /mnt.
Mara tu tumefikia shell, tutaunda sampuli ya faili testing.txt katika saraka ya /mnt kama inavyoonyeshwa.
$ echo "This tests persistent external storage" > /mnt/testing.txt
Kisha tutatoka kwenye kontena na kuangalia ikiwa faili iko kwenye hifadhi ya nje inayokaa kwenye seva pangishi
# exit # cat /var/lib/containers/backup_storage/testing.txt
Pato ⇒ Hii hujaribu hifadhi ya nje inayoendelea.
Kusimamisha na Kuondoa Vyombo
Mara tu unapomaliza kuendesha chombo chako, unaweza kuisimamisha kwa kutumia amri ya kusimamisha podman ikifuatiwa na kitambulisho cha chombo ambacho unaweza kupata kutoka kwa amri ya podman ps.
# podman stop container-id
Ili kuondoa vyombo ambavyo huvihitaji tena, kwanza, hakikisha kwamba umesimamisha na kisha omba amri ya podman rm ikifuatiwa na kitambulisho cha chombo au jina kama chaguo.
# podman rm container-id
Ili kuondoa vyombo vingi kwa amri moja, bainisha vitambulisho vya kontena vilivyotenganishwa na nafasi.
# podman rm container-id-1 container-id-2 container-id-3
Ili kufuta vyombo vyako vyote, endesha amri:
# podman rm -a
Kuondoa Picha
Ili kuondoa picha, kwanza, hakikisha kwamba vyombo vyote vilivyotolewa kwenye picha vimesimamishwa na kuondolewa jinsi ilivyojadiliwa katika mada ndogo iliyotangulia.
Ifuatayo, endelea na utekeleze amri ya podman -rmi
ikifuatiwa na kitambulisho cha picha kama inavyoonyeshwa:
# podman -rmi image-id
Hitimisho
Hii inahitimisha sura hii ya kudhibiti na kufanya kazi na kontena katika RHEL 8. Tunatumai mwongozo huu umetoa uelewa mzuri wa vyombo na jinsi unavyoweza kuingiliana na kudhibiti kwenye mfumo wako wa RHEL kwa kutumia podman na Skopeo.