Kā pārvaldīt konteinerus, izmantojot Podman un Skopeo RHEL 8


Viena no problēmām, ar kurām izstrādātāji saskārās agrāk, ir panākt, lai lietojumprogrammas droši darbotos vairākās skaitļošanas vidēs. Bieži vien lietojumprogrammas nedarbojās, kā paredzēts, vai arī radās kļūdas un tās vispār neizdevās. Un tur radās konteineru jēdziens.

Kas ir konteinera attēli?

Konteinera attēli ir statiski faili, kas tiek piegādāti ar izpildāmu kodu, kas darbojas izolētā vidē. Konteinera attēls ietver sistēmas bibliotēkas, atkarības un citus platformas iestatījumus, kas lietojumprogrammai nepieciešami, lai palaistu dažādās vidēs.

Red Hat Linux nodrošina noderīgu konteineru rīku komplektu, kurus varat izmantot, lai strādātu tieši ar Linux konteineriem, izmantojot nepieciešamās dokeru komandas. Tie ietver:

  • Podman - tas ir dēmonu mazāk konteineru dzinējs OCI konteineru darbināšanai un pārvaldīšanai saknes vai bez sakņu režīmā. Podman ir līdzīgs Docker un tam ir tādas pašas komandu iespējas, izņemot to, ka Docker ir dēmons. Izmantojot Podman, jūs varat vilkt, palaist un pārvaldīt konteinera attēlus tāpat kā ar Docker. Podman ir aprīkots ar daudzām uzlabotām funkcijām, pilnībā integrējas sistēmās un piedāvā lietotāja vārda vietas atbalstu, kas ietver konteineru palaišanu bez root lietotāja nepieciešamības.
  • Skopeo: tas ir komandrindas rīks, ko izmanto konteineru attēlu kopēšanai no viena reģistra uz citu. Jūs varat izmantot Skopeo, lai kopētu attēlus no konkrēta resursdatora un no tā, kā arī kopētu attēlus uz citu konteineru reģistru vai vidi. Papildus attēlu kopēšanai varat to izmantot, lai pārbaudītu attēlus no dažādiem reģistriem, un izmantojiet parakstus, lai izveidotu un pārbaudītu attēlus.
  • Buildah: Šis ir komandrindas rīku kopums, ko izmanto konteineru OCI attēlu izveidošanai un pārvaldīšanai, izmantojot Docker failus.

Šajā rakstā mēs koncentrēsimies uz konteineru pārvaldīšanu, izmantojot Podman un Skopeo.

Konteineru attēlu meklēšana no attālā reģistra

Podman meklēšanas komanda ļauj meklēt atlasītos attālajos reģistros konteinera attēlus. Noklusētais reģistru saraksts ir definēts failā registries.conf, kas atrodas direktorijā/etc/containers /.

Reģistrus nosaka 3 sadaļas.

  • [register.search] - Šajā sadaļā ir norādīti noklusējuma reģistri, kurus Podman var meklēt konteinera attēlus. Tas meklē pieprasīto attēlu reģistros register.access.redhat.com, register.redhat.io un docker.io.

  • [register.insecure] - Šajā sadaļā ir norādīti reģistri, kas neievieš TLS šifrēšanu, t.i., nedroši reģistri. Pēc noklusējuma ieraksti nav norādīti.

  • [registries.block] - tas bloķē vai liedz piekļuvi norādītajiem reģistriem no jūsu vietējās sistēmas. Pēc noklusējuma ieraksti nav norādīti.

Kā regulārs (bez saknes) lietotājs, kas vada komandu Podman, varat definēt pats savu registerries.conf failu mājas direktorijā ($HOME/.config/container/registries.conf), lai ignorētu visas sistēmas iestatījumus.

Norādot reģistrus, ņemiet vērā sekojošo:

  • Katram reģistram jāpievieno atsevišķas pēdiņas.
  • Reģistrus var norādīt, izmantojot resursdatora nosaukumu vai IP adresi.
  • Ja ir norādīti vairāki reģistri, tie jāatdala ar komatiem.
  • Ja reģistrs izmanto nestandarta portu - vai nu ostas TCP porti 443 drošai un 80 nedrošai, - porta numurs jānorāda blakus reģistra nosaukumam, piem. register.example.com:5566.

Lai reģistrā meklētu konteinera attēlu, izmantojot sintaksi:

# podman search registry/container_image

Piemēram, lai meklētu Redis attēlu reģistrā register.redhat.io, izsauciet komandu:

# podman search registry.redhat.io/redis

Lai meklētu MariaDB konteinera attēlu palaišanu.

# podman search registry.redhat.io/mariadb

Lai iegūtu detalizētu konteinera attēla aprakstu, iegūtajos rezultātos izmantojiet opciju --no-trunc pirms konteinera attēla nosaukuma. Piemēram, mēs centīsimies iegūt detalizētu MariaDB konteinera attēla aprakstu, kā parādīts:

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

Konteinera attēlu vilkšana

Lai izvilktu vai izgūtu konteinera attēlus no attālā reģistra, vispirms vispirms ir jāveic autentifikācija. Piemēram, lai izgūtu MariaDB konteinera attēlu, vispirms piesakieties Redhat reģistrā:

# podman login

Norādiet savu lietotājvārdu un paroli un uz tastatūras nospiediet taustiņu ENTER. Ja viss izdosies, jums jāsaņem apstiprinājuma ziņojums, ka pieteikšanās reģistrā bija veiksmīga.

Login Succeeded!

Tagad jūs varat vilkt attēlu, izmantojot parādīto sintaksi:

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

<registry> attiecas uz attālo resursdatoru vai reģistru, kas nodrošina konteineru attēlu krātuvi TCP <port>. <namespace> un <name> kopīgi norāda konteinera attēlu, pamatojoties uz reģistrā esošo <namespace>. Visbeidzot, opcija <tag> norāda konteinera attēla versiju. Ja neviens nav norādīts, tiek izmantots noklusējuma tags - jaunākais.

Vienmēr ieteicams pievienot uzticamus reģistrus, proti, tos, kas nodrošina šifrēšanu un neļauj anonīmiem lietotājiem nārstot kontus ar nejaušiem nosaukumiem.

Lai vilktu MariaDB attēlu, palaidiet komandu:

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

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

Turpmākiem konteinera attēlu izvilkšanai nav nepieciešama papildu pieteikšanās, jo jūs jau esat autentificēts. Lai vilktu Redis konteinera attēlu, vienkārši palaidiet:

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

Konteinera attēlu uzskaitīšana

Kad esat pabeidzis attēlu izvilkšanu, palaižot komandu Podman images, varat apskatīt pašreiz resursdatorā esošos attēlus.

# podman images

Konteineru attēlu pārbaude

Pirms konteinera palaišanas vienmēr ir ieteicams izpētīt attēlu un saprast, ko tas dara. Podman inspect komanda izdrukā metadatu jūru par konteineru, piemēram, OS un arhitektūru.

Lai pārbaudītu attēlu, palaidiet komandu Podman inspect, kam seko attēla ID vai krātuve.

# podman inspect IMAGE ID
OR
# podman inspect REPOSITORY

Tālāk sniegtajā piemērā mēs pārbaudām MariaDB konteineru.

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

Lai iegūtu konkrētus konteinera metadatus, iziet opciju --format , kam seko metadati un konteinera identitāte (attēla ID vai nosaukums).

Tālāk sniegtajā piemērā mēs iegūstam informāciju par RHEL 8 bāzes konteinera arhitektūru un aprakstu, kas ietilpst sadaļā “Etiķetes”.

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

Lai pārbaudītu attālo attēlu no cita reģistra, izmantojiet komandu skopeo inspect. Tālāk sniegtajā piemērā mēs pārbaudām RHEL 8 init attēlu, kas mitināts Docker.

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

Konteinera attēlu marķēšana

Kā jūs, iespējams, atzīmējāt, attēlu nosaukumiem parasti ir vispārējs raksturs. Piemēram, redis attēls ir marķēts:

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

Attēlu iezīmēšana dod viņiem intuitīvāku nosaukumu, lai labāk saprastu, ko tie satur. Izmantojot komandu Podman tag, varat izveidot attēla tagu, kas būtībā ir aizstājvārds attēla nosaukumam, kas sastāv no dažādām daļām.

Šie ir:

registry/username/NAME:tag

Piemēram, lai mainītu Redis attēla vispārējo nosaukumu, kura ID ir 646f2730318c, mēs izpildīsim komandu:

# podman tag 646f2730318c myredis

Lai pievienotu tagu beigās, pievienojiet pilnu kolu, kam seko taga numurs:

# podman tag 646f2730318c myredis:5.0

Nepievienojot taga numuru, tam vienkārši tiks piešķirts pēdējais atribūts.

Darbojas konteinera attēli

Lai palaistu konteineru, izmantojiet komandu Podman run. Piemēram:

# podman run image_id

Lai konteiners klusi darbotos fonā kā dēmona pakalpojums, izmantojiet opciju -d , kā parādīts.

# podman run -d image_id

Piemēram, lai palaistu redis attēlu ar ID 646f2730318c, mēs izsauksim komandu:

# podman run -d 646f2730318c

Ja lietojat konteineru, kura pamatā ir operētājsistēma, piemēram, RHEL 8 bāzes attēls, piekļuvi čaulai varat iegūt, izmantojot direktīvu -it . Opcija -i izveido interaktīvu sesiju, kamēr -t rada termināla sesiju. Opcija --name iestata konteinera nosaukumu mybash, kamēr tas ir bāzes attēla ecbc6f53bba0 attēla ID.

# podman run -it --name=mybash ecbc6f53bba0

Pēc tam jūs varat palaist jebkuras čaulas komandas. Tālāk sniegtajā piemērā mēs pārbaudām konteinera attēla OS versiju.

# cat /etc/os-release

Lai izietu no konteinera, vienkārši izsauciet komandu exit.

# exit

Kad konteiners ir iziets, tas automātiski apstājas. Lai atkal sāktu konteineru, izmantojiet komandu Podman start ar karodziņu -ai , kā parādīts.

# podman start -ai mybash

Tas atkal ļauj piekļūt čaulai.

Darbojošo konteineru attēlu uzskaitīšana

Lai uzskaitītu pašlaik darbojošos konteinerus, izmantojiet komandu Podman ps, kā parādīts.

# podman ps

Lai skatītu visus konteinerus, ieskaitot tos, kas ir aizvērti pēc palaišanas, izmantojiet komandu:

# podman ps -a

Konfigurējiet konteinera attēlus automātiskai palaišanai sadaļā Systemd Service

Šajā sadaļā mēs koncentrējamies uz to, kā konteineru var konfigurēt tā, lai tas darbotos tieši RHEL sistēmā kā systemd pakalpojums.

Pirmkārt, iegūstiet vēlamo attēlu. Šajā gadījumā mēs esam izvilkuši Redis attēlu no dokstacijas centra:

# podman pull docker.io/redis

Ja jūsu sistēmā darbojas SELinux, jums jāaktivizē loga container_manage_cgroup, lai palaistu konteinerus ar systemd.

# setsebool -p container_manage_cgroup on

Pēc tam palaidiet konteinera attēlu fonā un piešķiriet to vēlamajam attēla nosaukumam. Šajā piemērā mēs nosaucām savu attēlu redis_server un kartē portu 6379 no konteinera uz mūsu RHEL 8 resursdatoru

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

Pēc tam mēs izveidosim systemd vienības konfigurācijas failu redisēšanai direktorijā/etc/systemd/system /.

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

Ielīmējiet zemāk esošo saturu failā.

[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

Saglabājiet un izejiet no faila.

Pēc tam konfigurējiet konteineru tā, lai tas automātiski sāktos, startējot.

# systemctl enable redis-container.service

Pēc tam palaidiet konteineru un pārbaudiet tā darbības statusu.

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

Konfigurējiet konteinera attēlu pastāvīgu krātuvi

Palaižot konteinerus, ir piesardzīgi konfigurēt pastāvīgu ārējo krātuvi resursdatorā. Tas nodrošina dublējumu gadījumā, ja konteiners avarē vai tiek nejauši noņemts.

Lai saglabātu datus, mēs direktoriju, kas atrodas resursdatorā, kartēsim direktorijā konteinera iekšpusē.

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

Opcija - priviliģēts tiek nodota, kad SELinux ir iestatīts uz izpildi. Opcija -v norāda ārējo sējumu, kas atrodas resursdatorā. Konteinera tilpums šeit ir/mnt direktorijs.

Kad būsim piekļuvuši čaulai, direktorijā/mnt izveidosim faila testing.txt paraugu, kā parādīts.

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

Pēc tam mēs iziesim no konteinera un pārbaudīsim, vai fails pastāv ārējā krātuvē, kas atrodas resursdatorā

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

Izeja ⇒ Šis pārbauda pastāvīgu ārējo atmiņu.

Konteineru apturēšana un noņemšana

Kad esat pabeidzis konteinera palaišanu, varat to pārtraukt, izmantojot komandu Podman stop, kam seko konteinera ID, kuru varat iegūt no komandas Podman ps.

# podman stop container-id

Lai noņemtu vairs nevajadzīgos konteinerus, vispirms pārliecinieties, ka to pārtraucat, un pēc tam kā opciju izsauciet komandu Podman rm, kam seko konteinera ID vai nosaukums.

# podman rm container-id

Lai vienā komandā noņemtu vairākus konteinerus, norādiet konteineru ID, kas atdalīti ar atstarpi.

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

Lai notīrītu visus konteinerus, palaidiet komandu:

# podman rm -a

Attēla noņemšana

Lai noņemtu attēlu, vispirms pārliecinieties, ka visi no attēliem nārstotie konteineri ir apturēti un noņemti, kā tika apspriests iepriekšējā apakštēmā.

Pēc tam turpiniet un palaidiet komandu Podman -rmi , kam seko attēla ID, kā parādīts:

# podman -rmi image-id

Secinājums

Šajā sadaļā ir aprakstīta šī nodaļa par konteineru pārvaldību un darbu ar RHEL 8. Mēs ceram, ka šī rokasgrāmata sniedza pienācīgu izpratni par konteineriem un to, kā jūs varat mijiedarboties un pārvaldīt tos savā RHEL sistēmā, izmantojot Podman un Skopeo.