Giunsa Pagdumala ang mga Kontainer Gamit ang Podman ug Skopeo sa RHEL 8


Usa sa mga hagit nga giatubang sa mga developer kaniadto mao ang pagkuha sa mga aplikasyon nga masaligan nga modagan sa daghang mga palibot sa kompyuter. Kasagaran, ang mga aplikasyon wala modagan sama sa gipaabut o nakasugat og mga sayup ug napakyas sa hingpit. Ug didto natawo ang konsepto sa mga sudlanan.

Unsa ang mga Imahe sa Container?

Ang mga imahen sa sulud mao ang mga static nga file nga gipadala nga adunay executable code nga nagdagan sa usa ka nahilit nga palibot. Ang usa ka sudlanan nga imahen naglangkob sa mga librarya sa sistema, dependency ug uban pang mga setting sa platform nga gikinahanglan sa aplikasyon aron makadagan sa lainlaing mga palibot.

Naghatag ang Red Hat Linux og usa ka hugpong sa mapuslanon nga mga gamit sa sudlanan nga mahimo nimong magamit aron direkta nga magtrabaho sa mga sulud sa Linux gamit ang nanginahanglan nga mga mando sa docker. Kini naglakip sa:

  • Podman – Kini usa ka daemon nga gamay nga sudlanan nga makina alang sa pagpadagan ug pagdumala sa mga sudlanan sa OCI sa bisan unsang root o rootless mode. Ang Podman parehas sa Docker ug adunay parehas nga kapilian sa mando gawas nga ang Docker usa ka daemon. Mahimo nimong ibira, dagan, ug pagdumala ang mga imahe sa sulud gamit ang podman sa parehas nga paagi sama sa imong buhaton sa Docker. Ang Podman moabut uban ang daghang mga advanced nga bahin, hingpit nga nahiusa sa mga sistema, ug nagtanyag sa user Namespace nga suporta nga naglakip sa pagpadagan sa mga sudlanan nga wala kinahanglana ang usa ka root user.
  • Skopeo: Kini usa ka himan sa command-line nga gigamit sa pagkopya sa mga hulagway sa sudlanan gikan sa usa ka rehistro ngadto sa lain. Mahimo nimong gamiton ang Skopeo sa pagkopya sa mga hulagway ngadto ug gikan sa usa ka partikular nga host ingon man usab sa pagkopya sa mga hulagway ngadto sa laing container registry o palibot. Gawas sa pagkopya sa mga hulagway, mahimo nimo kining gamiton sa pag-inspeksyon sa mga hulagway gikan sa lain-laing mga rehistro ug paggamit sa mga pirma sa paghimo ug pag-verify sa mga hulagway.
  • Buildah: Kini usa ka set sa command-line tool nga gigamit sa pagmugna ug pagdumala sa sudlanan nga OCI nga mga hulagway gamit ang Docker files.

Niini nga artikulo, mag-focus kami sa Pagdumala sa mga sudlanan gamit ang podman ug Skopeo.

Pagpangita sa mga Imahen sa Container gikan sa Remote Registry

Ang podman search command nagtugot kanimo sa pagpangita sa pinili nga hilit nga mga rehistro alang sa mga hulagway sa sudlanan. Ang default nga listahan sa mga rehistro gihubit sa registries.conf file nga nahimutang sa /etc/containers/ directory.

Ang mga rehistro gihubit sa 3 nga mga seksyon.

  • [registries.search] – Kini nga seksyon nagtino sa default nga mga rehistro nga podman makapangita sa mga hulagway sa sudlanan. Gipangita niini ang gipangayo nga hulagway sa registry.access.redhat.com, registry.redhat.io, ug docker.io nga mga rehistro.

  • [registries.insecure]– Kini nga seksyon nagtino sa mga rehistro nga wala magpatuman sa TLS encryption i.e walay kasegurohan nga mga rehistro. Sa kasagaran, walay entries ang gipiho.

  • [registries.block] – Gibabagan o gilimud niini ang pag-access sa mga piho nga rehistro gikan sa imong lokal nga sistema. Sa kasagaran, walay entries ang gipiho.

Isip usa ka regular (non-root) nga tiggamit nga nagpadagan sa podman nga sugo, mahimo nimong ipasabot ang imong kaugalingong registries.conf file sa imong home directory ($HOME/.config/containers/registries.conf) aron ma-override ang mga setting sa tibuok sistema.

Samtang imong gipiho ang mga rehistro, hinumdomi ang mosunod:

  • Ang matag rehistro kinahanglan nga gilakip sa usa ka kinutlo.
  • Ang mga rehistro mahimong matino gamit ang hostname o IP address.
  • Kung daghang mga rehistro ang gipiho, nan kinahanglan nga ibulag sila pinaagi sa mga koma.
  • Kung ang usa ka registry naggamit ug dili standard nga pantalan – bisan ang port TCP ports 443 alang sa luwas ug 80 alang sa insecure, – ang numero sa pantalan kinahanglang ipiho kauban sa ngalan sa registry e.g. registry.example.com:5566.

Aron makapangita usa ka rehistro alang sa usa ka sulud nga imahe gamit ang syntax:

# podman search registry/container_image

Pananglitan, aron makapangita usa ka imahe sa Redis sa registry.redhat.io registry, gamita ang mando:

# podman search registry.redhat.io/redis

Sa pagpangita alang sa usa ka MariaDB container image run.

# podman search registry.redhat.io/mariadb

Aron makakuha og detalyado nga paghulagway sa usa ka sudlanan nga larawan, gamita ang --no-trunc nga kapilian sa dili pa ang ngalan sa sudlanan nga larawan gikan sa mga resulta nga imong makuha. Pananglitan, sulayan namon nga makakuha usa ka detalyado nga paghulagway sa imahe sa sulud sa MariaDB sama sa gipakita:

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

Pagbira sa mga Imahen sa Kontainer

Ang pagbira o pagbawi sa mga imahen sa sudlanan gikan sa usa ka hilit nga rehistro nanginahanglan nga imong pamatud-an una ang bisan unsang butang. Pananglitan, aron makuha ang imahe sa sudlanan sa MariaDB, una nga pag-log in sa Redhat registry:

# podman login

Ihatag ang imong username ug password ug i-hit 'ENTER' sa imong keyboard. Kung maayo ang tanan, kinahanglan ka makakuha usa ka mensahe sa pagkumpirma nga ang pag-login sa rehistro malampuson.

Login Succeeded!

Karon, mahimo nimong ibira ang imahe gamit ang syntax nga gipakita:

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

Ang <registry> nagtumong sa hilit nga host o registry nga naghatag ug repository sa mga hulagway sa sudlanan sa TCP <port>. Ang <namespace> ug ang <name> hiniusang nagtino sa usa ka sudlanan nga hulagway base sa <namespace> sa registry. Sa kataposan, ang opsyon nga <tag> nagtino sa bersyon sa hulagway sa sudlanan. Kung walay gipiho, ang default nga tag - pinakabag-o - gigamit.

Kanunay nga girekomenda nga idugang ang kasaligan nga mga rehistro, kana ang naghatag pag-encrypt ug dili tugutan ang mga wala mailhi nga tiggamit nga maghimo mga account nga adunay mga random nga ngalan.

Aron makuha ang imahe sa MariaDB, padagana ang mando:

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

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

Para sa sunod nga mga hulagway sa sudlanan nga gibira, wala nay dugang nga pag-log in ang gikinahanglan tungod kay na-authenticate ka na. Aron makuha ang usa ka imahe sa sudlanan sa Redis, pagdagan lang:

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

Paglista sa mga Imahen sa Kontainer

Kung nahuman na nimo ang pagbira sa mga imahe, mahimo nimong tan-awon ang mga imahe nga naa karon sa imong host pinaagi sa pagpadagan sa mando sa podman images.

# podman images

Pagsusi sa mga Imahen sa Container

Sa dili pa magpadagan sa usa ka sudlanan, kanunay nga maayong ideya nga susihon ang imahe ug masabtan kung unsa ang gibuhat niini. Ang podman inspect command nag-print sa dagat sa metadata bahin sa sudlanan sama sa OS ug Architecture.

Aron masusi ang usa ka imahe, padagana ang podman inspect command nga gisundan sa image ID o repository.

# podman inspect IMAGE ID
OR
# podman inspect REPOSITORY

Sa pananglitan sa ubos, among gisusi ang sudlanan sa MariaDB.

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

Aron makuha ang piho nga metadata alang sa usa ka sudlanan ipasa ang --format kapilian nga gisundan sa metadata ug ang identidad sa sudlanan ( Image ID o ngalan ).

Sa pananglitan sa ubos, nagkuha kami og impormasyon mahitungod sa arkitektura ug paghulagway sa RHEL 8 base nga sudlanan nga anaa sa ilawom sa seksyon nga 'Mga Label'.

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

Aron masusi ang layo nga imahe gikan sa laing rehistro, gamita ang skopeo inspect command. Sa pananglitan sa ubos, among gisusi ang usa ka RHEL 8 init nga imahe nga gi-host sa Docker.

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

Pag-tag sa mga Imahen sa Kontainer

Sama sa imong namatikdan, ang mga ngalan sa imahe kasagarang generic sa kinaiyahan. Pananglitan, ang redis nga imahe gimarkahan:

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

Ang pag-tag sa mga hulagway naghatag kanila og mas intuitive nga ngalan aron mas masabtan kung unsa ang sulod niini. Gamit ang podman tag command, makahimo ka og image tag nga usa ka alias sa ngalan sa imahe nga naglangkob sa lain-laing mga bahin.

Kini mao ang:

registry/username/NAME:tag

Pananglitan, aron mabag-o ang generic nga ngalan sa imahe sa Redis nga adunay ID nga 646f2730318c, among ipatuman ang mando:

# podman tag 646f2730318c myredis

Aron makadugang usa ka tag sa katapusan idugang ang usa ka tibuuk nga colon nga gisundan sa numero sa tag:

# podman tag 646f2730318c myredis:5.0

Kung wala’y pagdugang sa numero sa tag, i-assign lang kini sa pinakabag-o nga hiyas.

Nagdagan nga Mga Imahen sa Kontainer

Sa pagpadagan sa usa ka sudlanan, gamita ang podman run command. Pananglitan:

# podman run image_id

Aron hilom nga magpadagan sa usa ka sudlanan sa background isip serbisyo sa daemon gamita ang -d nga opsyon sama sa gipakita.

# podman run -d image_id

Pananglitan, aron ipadagan ang redis nga imahe nga adunay ID 646f2730318c, among gamiton ang mando:

# podman run -d 646f2730318c

Kung nagdagan ka usa ka sudlanan nga gibase sa usa ka operating system sama sa RHEL 8 base nga imahe, mahimo kang makakuha og access sa shell gamit ang -it nga direktiba. Ang -i nga opsyon nagmugna og interactive session samtang ang -t nagpatunghag terminal session. Ang --name nga opsyon nagbutang sa ngalan sa sudlanan ngadto sa mybash samtang mao ang ecbc6f53bba0 image id sa base nga hulagway.

# podman run -it --name=mybash ecbc6f53bba0

Pagkahuman, mahimo nimong ipadagan ang bisan unsang mga sugo sa shell. Sa pananglitan sa ubos, among gipamatud-an ang bersyon sa OS sa imahe sa sudlanan.

# cat /etc/os-release

Aron makagawas sa sudlanan, gamita lang ang exit command.

# exit

Kung makagawas na ang sudlanan, awtomatiko kini nga mohunong. Para masugdan pag-usab ang sudlanan, gamita ang podman start command gamit ang -ai flag sama sa gipakita.

# podman start -ai mybash

Sa makausa pa, kini naghatag kanimo og access sa kabhang.

Paglista sa Nagdagan nga Mga Imahen sa Kontainer

Aron ilista ang kasamtangang nagdagan nga mga sudlanan, gamita ang podman ps command sama sa gipakita.

# podman ps

Aron matan-aw ang tanan nga mga sudlanan lakip ang mga migawas pagkahuman sa pagdagan, gamita ang mando:

# podman ps -a

I-configure ang Mga Imahen sa Container aron Awtomatikong Pagsugod Ubos sa Serbisyo sa Systemd

Niini nga seksyon, nagpunting kami kung giunsa ang usa ka sudlanan mahimong ma-configure aron direkta nga modagan sa usa ka sistema sa RHEL ingon usa ka serbisyo sa systemd.

Una, kuhaa ang imong gusto nga imahe. Sa kini nga kaso, gikuha namon ang imahe sa Redis gikan sa docker hub:

# podman pull docker.io/redis

Kung ikaw adunay SELinux nga nagdagan sa imong sistema, kinahanglan nimo nga i-aktibo ang container_manage_cgroup boolean aron makadagan ang mga sudlanan nga adunay systemd.

# setsebool -p container_manage_cgroup on

Pagkahuman, padagana ang imahe sa sulud sa background ug i-assign kini sa imong gusto nga ngalan sa imahe. Sa kini nga pananglitan, among gihinganlan ang among imahe nga redis_server ug gimapa ang port 6379 gikan sa sudlanan hangtod sa among RHEL 8 host

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

Sunod, maghimo kita ug systemd unit configuration file para sa redis sa /etc/systemd/system/ directory.

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

Idikit ang sulod sa ubos sa file.

[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

Pag-save ug paggawas sa file.

Sunod, i-configure ang sudlanan aron awtomatiko nga magsugod sa bootup.

# systemctl enable redis-container.service

Sunod, sugdi ang sudlanan ug pamatud-i ang kahimtang sa pagdagan niini.

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

I-configure ang Persistent Storage alang sa Container Images

Kung nagdagan ang mga sudlanan, maalamon nga i-configure ang padayon nga pagtipig sa gawas sa host. Naghatag kini og backup kung ang sudlanan nahagsa o matangtang nga wala tuyoa.

Aron mapadayon ang datos, mag-mapa kami sa usa ka direktoryo nga nahimutang sa host sa usa ka direktoryo sa sulod sa sudlanan.

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

Ang --privileged nga opsyon ipasa kung ang SELinux gitakda sa pagpatuman. Ang -v nga opsyon nagtino sa eksternal nga volume nga nahimutang sa host. Ang gidaghanon sa sudlanan dinhi mao ang/mnt nga direktoryo.

Sa higayon nga ma-access na namo ang shell, maghimo kami og sample file testing.txt sa /mnt directory sama sa gipakita.

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

Mogawas dayon kami sa sudlanan ug susihon kung naa ba ang file sa external storage nga nagpuyo sa host

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

Output ⇒ Gisulayan niini ang padayon nga pagtipig sa gawas.

Paghunong ug Pagtangtang sa mga Kontainer

Kung nahuman na nimo ang pagpadagan sa imong sudlanan, mahimo nimong hunongon kini gamit ang podman stop command nga gisundan sa container-id nga imong makuha gikan sa podman ps command.

# podman stop container-id

Aron tangtangon ang mga sudlanan nga dili na nimo kinahanglan, una, siguroha nga imong hunongon kini ug dayon gamiton ang podman rm nga sugo nga gisundan sa container id o ngalan isip kapilian.

# podman rm container-id

Aron matangtang ang daghang mga sudlanan sa usa ka pag-adto sa usa ka mando, ipiho ang mga container id nga gibulag sa usa ka wanang.

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

Aron malimpyohan ang tanan nimong mga sudlanan, padagana ang mando:

# podman rm -a

Pagtangtang sa usa ka Imahe

Aron matangtang ang usa ka imahe, una, siguruha nga ang tanan nga mga sulud nga gipatungha gikan sa mga imahe gipahunong ug gitangtang sama sa gihisgutan sa miaging sub-topic.

Sunod, ipadayon ug padagana ang podman -rmi command nga gisundan sa ID sa hulagway sama sa gipakita:

# podman -rmi image-id

Konklusyon

Kini nagputos niini nga kapitulo sa pagdumala ug pagtrabaho uban sa mga sudlanan sa RHEL 8. Kami nanghinaut nga kini nga giya naghatag ug usa ka desente nga pagsabot sa mga sudlanan ug kon sa unsang paagi kamo makig-uban ug makadumala niini sa imong RHEL nga sistema gamit ang podman ug Skopeo.