Konttien hallinta Podmanilla ja Skopeolla RHEL 8:ssa


Yksi kehittäjien menneisyydessä kohtaamista haasteista on saada sovellukset toimimaan luotettavasti useissa laskentaympäristöissä. Usein sovellukset eivät toimineet odotetulla tavalla tai ne kohtasivat virheitä ja epäonnistuivat kokonaan. Ja sieltä syntyi käsite säiliöistä.

Mitä ovat säilökuvat?

Säilön kuvat ovat staattisia tiedostoja, jotka toimitetaan suoritettavan koodin kanssa, joka toimii eristetyssä ympäristössä. Säilökuva sisältää järjestelmäkirjastoja, riippuvuuksia ja muita alustaasetuksia, joita sovellus tarvitsee toimiakseen erilaisissa ympäristöissä.

Red Hat Linux tarjoaa joukon hyödyllisiä säilötyökaluja, joita voit hyödyntää työskennelläksesi suoraan Linux-säilöjen kanssa käyttämällä Docker-komentoja. Nämä sisältävät:

  • Podman – Tämä on demoniton konttimoottori OCI-säilöjen ajamiseen ja hallintaan joko root- tai rootless-tilassa. Podman on samanlainen kuin Docker ja siinä on samat komentovaihtoehdot, paitsi että Docker on demoni. Voit vetää, ajaa ja hallita säilökuvia podmanilla samalla tavalla kuin Dockerilla. Podman sisältää paljon lisäominaisuuksia, integroituu täysin järjestelmiin ja tarjoaa käyttäjälle nimiavaruustuen, joka sisältää säilöjen suorittamisen ilman pääkäyttäjää.
  • Skopeo: Tämä on komentorivityökalu, jota käytetään säilön kuvien kopioimiseen rekisteristä toiseen. Voit käyttää Skopeoa kuvien kopioimiseen tiettyyn isäntään ja sieltä pois sekä kuvien kopioimiseen toiseen säilörekisteriin tai ympäristöön. Kuvien kopioimisen lisäksi voit käyttää sitä tarkastaaksesi kuvia eri rekistereistä ja käyttää allekirjoituksia kuvien luomiseen ja tarkistamiseen.
  • Buildah: Tämä on joukko komentorivityökaluja, joita käytetään säilön OCI-kuvien luomiseen ja hallintaan Docker-tiedostojen avulla.

Tässä artikkelissa keskitymme säilöjen hallintaan podmanilla ja Skopeolla.

Säilön kuvien etsiminen etärekisteristä

podman-haku-komennolla voit etsiä säilökuvia valituista etärekistereistä. Oletusrekisteriluettelo on määritetty registries.conf-tiedostossa, joka sijaitsee hakemistossa /etc/containers/.

Rekisterit määritellään 3 osastolla.

  • [registries.search] – Tässä osiossa määritetään oletusrekisterit, joista podman voi etsiä säilökuvia. Se etsii pyydettyä kuvaa rekistereistä registry.access.redhat.com, registry.redhat.io ja docker.io.

  • [registries.insecure] – Tässä osiossa määritetään rekisterit, jotka eivät käytä TLS-salausta, eli suojaamattomat rekisterit. Oletusarvoisesti merkintöjä ei ole määritetty.

  • [registries.block] – Tämä estää tai estää pääsyn määritettyihin rekistereihin paikallisesta järjestelmästäsi. Oletusarvoisesti merkintöjä ei ole määritetty.

Tavallisena (ei-root-käyttäjänä), joka käyttää podman-komentoa, voit määrittää oman registries.conf-tiedoston kotihakemistoosi ($HOME/.config /containers/registries.conf) ohittaaksesi järjestelmän laajuiset asetukset.

Säännöt rekisterien määrittämisessä

Kun määrität rekistereitä, pidä mielessä seuraavat asiat:

  • Jokaisen rekisterin tulee olla yksittäisten lainausmerkkien sisällä.
  • Rekisterit voidaan määrittää käyttämällä joko isäntänimeä tai IP-osoitetta.
  • Jos useita rekistereitä on määritetty, ne tulee erottaa pilkuilla.
  • Jos rekisteri käyttää ei-standardista porttia – jompikumpi portti TCP-porteista 443 turvallista ja 80 epävarmaa, portin numero tulee määrittää rekisterin nimen rinnalle, esim. rekisteri.esimerkki.fi:5566.

Säilön kuvan hakeminen rekisteristä syntaksin avulla:

podman search registry/container_image

Jos esimerkiksi haluat etsiä Redis-kuvaa registry.redhat.io-rekisteristä, käynnistä komento:

podman search registry.redhat.io/redis

Etsi MariaDB-säilökuva suorittamalla.

podman search registry.redhat.io/mariadb

Saat yksityiskohtaisen kuvauksen säilökuvasta käyttämällä --no-trunc-vaihtoehtoa ennen säilön kuvan nimeä saamistasi tuloksista. Yritämme esimerkiksi saada yksityiskohtaisen kuvauksen MariaDB-konttikuvasta kuvan mukaisesti:

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

Säilön kuvien vetäminen

Säilön kuvien noutaminen tai hakeminen etärekisteristä vaatii ensin todennuksen ennen mitään muuta. Esimerkiksi MariaDB-säilökuvan hakemiseksi kirjaudu ensin Redhat-rekisteriin:

podman login

Anna käyttäjänimesi ja salasanasi ja paina näppäimistön ENTER-näppäintä. Jos kaikki menee hyvin, sinun pitäisi saada vahvistusviesti, että kirjautuminen rekisteriin onnistui.

Login Succeeded!

Nyt voit vetää kuvan käyttämällä näkyvää syntaksia:

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

<registry> viittaa etäisäntään tai -rekisteriin, joka tarjoaa säilön kuvien arkiston TCP:ssä <port>. <namespace> ja <name> määrittävät yhdessä säilön kuvan rekisterissä olevan <namespace> perusteella. Lopuksi vaihtoehto <tag> määrittää säilön kuvan version. Jos mitään ei ole määritetty, käytetään oletustunnistetta – viimeisintä.

On aina suositeltavaa lisätä luotettavia rekistereitä, toisin sanoen sellaisia, jotka tarjoavat salauksen eivätkä salli anonyymien käyttäjien luoda tilejä satunnaisilla nimillä.

Voit vetää MariaDB-kuvan suorittamalla komennon:

podman pull registry.redhat.io/rhel8/mariadb-103
  • <registry> – registry.redhat.io
  • <namespace> – rhel8
  • – MariaDB
  • <tag> – 103

Myöhemmät säilökuvat eivät vaadi enää kirjautumista, koska olet jo todennettu. Voit vetää Redis-säilökuvan suorittamalla:

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

Säilön kuvien luettelointi

Kun olet vetänyt kuvat, voit tarkastella isännässäsi tällä hetkellä olevia kuvia suorittamalla podman images -komennon.

podman images

Säiliöiden kuvien tarkastaminen

Ennen kuin käytät konttia, on aina hyvä idea tutkia kuvaa ja ymmärtää, mitä se tekee. podman inspect -komento tulostaa joukon metatietoja säilöstä, kuten käyttöjärjestelmästä ja arkkitehtuurista.

Tarkista kuva suorittamalla podman inspect -komento ja sen jälkeen kuvan tunnus tai arkisto.

podman inspect IMAGE ID
OR
podman inspect REPOSITORY

Alla olevassa esimerkissä tarkastamme MariaDB-säiliötä.

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

Jos haluat hakea säilön tiettyjä metatietoja, valitse --format ja sen jälkeen metatiedot ja säilön tunnus (kuvan tunnus tai nimi).

Alla olevassa esimerkissä haemme tietoja Labels-osion alla olevan RHEL 8 -perussäiliön arkkitehtuurista ja kuvauksesta.

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

Voit tarkistaa etäkuvan toisesta rekisteristä skopeo inspect -komennolla. Alla olevassa esimerkissä tarkastamme Dockerissa isännöityä RHEL 8 -aloituskuvaa.

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

Säilökuvien merkitseminen

Kuten olet ehkä huomannut, kuvien nimet ovat yleensä yleisiä. Esimerkiksi redis-kuva on merkitty seuraavasti:

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

Kuvien merkitseminen antaa niille intuitiivisemman nimen, jotta ne ymmärtävät paremmin, mitä ne sisältävät. podman-tunniste-komennolla voit luoda kuvatunnisteen, joka on pohjimmiltaan alias kuvan nimelle, joka koostuu eri osista.

Nämä ovat:

registry/username/NAME:tag

Jos esimerkiksi haluat muuttaa Redis-kuvan yleistä nimeä, jonka tunnus on 646f2730318c , suoritamme komennon:

podman tag 646f2730318c myredis

Jos haluat lisätä tunnisteen loppuun, lisää koko kaksoispiste ja sen jälkeen tagin numero:

podman tag 646f2730318c myredis:5.0

Ilman tunnisteen numeroa lisäämättä sille vain määritetään attribuutti viimeistään.

Säilön kuvat käynnissä

Suorita säilö podman run -komennolla. Esimerkiksi:

podman run image_id

Jos haluat ajaa säilöä hiljaa taustalla demonipalveluna, käytä -d-vaihtoehtoa kuvan mukaisesti.

podman run -d image_id

Jos esimerkiksi haluat suorittaa redis-kuvan tunnuksella 646f2730318c, kutsumme komennon:

podman run -d 646f2730318c

Jos käytät säilöä, joka perustuu käyttöjärjestelmään, kuten RHEL 8 -peruskuvaan, voit päästä käsiksi komentotulkoon -it-käskyn avulla. Valinta -i luo interaktiivisen istunnon, kun taas -t luo pääteistunnon. --name-vaihtoehto asettaa säilön nimeksi mybash, kun taas se on peruskuvan ecbc6f53bba0-kuvatunnus.

podman run -it --name=mybash ecbc6f53bba0

Sen jälkeen voit suorittaa mitä tahansa komentotulkkikomentoja. Alla olevassa esimerkissä tarkistamme säilön kuvan käyttöjärjestelmäversion.

cat /etc/os-release

Voit poistua säilöstä käynnistämällä exit-komennon.

exit

Kun säiliö on poistunut, se pysähtyy automaattisesti. Käynnistä säilö uudelleen käyttämällä podman start -komentoa -ai-lipun kanssa kuvan osoittamalla tavalla.

podman start -ai mybash

Jälleen kerran tämä antaa sinulle pääsyn kuoreen.

Käynnissä olevien säilökuvien luettelointi

Listaa käynnissä olevat säilöt podman ps -komennolla kuvan mukaisesti.

podman ps

Voit tarkastella kaikkia säilöjä, mukaan lukien ne, jotka ovat poistuneet ajon jälkeen, käyttämällä komentoa:

podman ps -a

Määritä säilökuvat käynnistymään automaattisesti Systemd Servicessä

Tässä osiossa keskitymme siihen, kuinka kontti voidaan määrittää toimimaan suoraan RHEL-järjestelmässä systemd-palveluna.

Hanki ensin haluamasi kuva. Tässä tapauksessa olemme vetäneet Redis-kuvan Docker Hubista:

podman pull docker.io/redis

Jos järjestelmässäsi on käynnissä SELinux, sinun on aktivoitava container_manage_cgroup boolean, jotta voit ajaa säilöjä systemd:llä.

setsebool -p container_manage_cgroup on

Suorita sen jälkeen säilön kuva taustalla ja määritä se haluamallesi kuvan nimelle. Tässä esimerkissä olemme nimenneet kuvamme redis_server ja yhdistäneet portin 6379 säilöstä RHEL 8 -isäntään.

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

Seuraavaksi aiomme luoda systemd-yksikön määritystiedoston redis-hakemistoon /etc/systemd/system/.

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

Liitä alla oleva sisältö tiedostoon.

[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

Tallenna ja poistu tiedostosta.

Määritä seuraavaksi säilö käynnistymään automaattisesti käynnistyksen yhteydessä.

systemctl enable redis-container.service

Käynnistä seuraavaksi säilö ja tarkista sen toimintatila.

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

Määritä säilytystila säilökuville

Kun käytät säilöjä, on järkevää määrittää pysyvä ulkoinen tallennustila isäntään. Tämä tarjoaa varmuuskopion siltä varalta, että säiliö kaatuu tai poistetaan vahingossa.

Tietojen säilyttämiseksi aiomme yhdistää isännässä sijaitsevan hakemiston säilön sisällä olevaan hakemistoon.

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

--privileged-vaihtoehto välitetään, kun SELinux on asetettu pakottavaksi. Vaihtoehto -v määrittää ulkoisen aseman, joka sijaitsee isännässä. Säilön tilavuus tässä on /mnt-hakemisto.

Kun olemme käyttäneet komentotulkkia, luomme näytetiedoston testing.txt /mnt-hakemistoon kuvan mukaisesti.

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

Tämän jälkeen poistumme säilöstä ja tarkistamme, onko tiedosto olemassa isäntäkoneen ulkoisessa tallennustilassa.

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

TulostusTämä testaa pysyvän ulkoisen tallennustilan.

Säiliöiden pysäyttäminen ja poistaminen

Kun olet lopettanut säilön suorittamisen, voit pysäyttää sen podman stop -komennolla ja sen jälkeen container-id-komennolla, jonka saat podman ps<:sta. komento.

podman stop container-id

Jos haluat poistaa tarpeettomat säilöt, varmista ensin, että lopetat sen ja käynnistä sitten podman rm -komento ja sen jälkeen säilön tunnus tai nimi vaihtoehtona.

podman rm container-id

Voit poistaa useita säilöjä kerralla yhdellä komennolla määrittämällä säilön tunnukset välilyönnillä erotettuna.

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

Tyhjennä kaikki säilösi suorittamalla komento:

podman rm -a

Kuvan poistaminen

Jos haluat poistaa kuvan, varmista ensin, että kaikki kuvista luodut säilöt pysäytetään ja poistetaan edellisen ala-aiheen mukaisesti.

Jatka seuraavaksi ja suorita podman-komento -rmi ja sen jälkeen kuvan tunnus:

podman -rmi image-id

Johtopäätös

Tämä päättää tämän luvun, joka käsittelee RHEL 8:n säilöjen hallintaa ja käyttöä. Toivomme, että tämä opas ymmärsi säilöistä ja kuinka voit käyttää ja hallita niitä RHEL-järjestelmässäsi käyttämällä podman- ja Skopeoa.