Bii o ṣe le Ṣakoso awọn Apoti Lilo Podman ati Skopeo ni RHEL 8


Ọkan ninu awọn italaya ti awọn oludagbasoke ti o dojuko ni iṣaaju ni gbigba awọn ohun elo lati ṣiṣẹ ni igbẹkẹle kọja awọn agbegbe iširo ọpọ. Nigbagbogbo, awọn ohun elo ko ṣiṣẹ bi o ti ṣe yẹ tabi awọn aṣiṣe alabapade ati kuna patapata. Ati pe nibo ni a ti bi imọran ti awọn apoti.

Kini Awọn aworan Apoti?

Awọn aworan apoti ni awọn faili aimi ti o gbe pẹlu koodu ṣiṣe ti o nṣiṣẹ ni agbegbe ti o ya sọtọ. Aworan apoti kan ni awọn ile-ikawe eto, awọn igbẹkẹle & awọn eto pẹpẹ miiran ti o nilo nipasẹ ohun elo lati ṣiṣẹ ni awọn agbegbe oriṣiriṣi.

Red Hat Linux pese ipilẹ ti awọn irinṣẹ ohun elo ti o wulo ti o le ni anfani lati ṣiṣẹ taara pẹlu awọn apoti Linux nipa lilo awọn ofin docker to nilo. Iwọnyi pẹlu:

  • Podman - Eyi jẹ ẹrọ daemon ti o kere si eiyan fun ṣiṣe ati iṣakoso awọn apoti OCI ni boya gbongbo tabi ipo ailopin. Podman jẹ iru si Docker ati pe o ni awọn aṣayan aṣẹ kanna ayafi pe Docker jẹ daemon kan. O le fa, ṣiṣe, ati ṣakoso awọn aworan eiyan nipa lilo podman ni ọna kanna bi o ṣe le ṣe pẹlu Docker. Podman wa pẹlu ọpọlọpọ awọn ẹya to ti ni ilọsiwaju, ṣepọ ni kikun pẹlu awọn ọna ṣiṣe, o nfun olumulo ni atilẹyin Namespace eyiti o pẹlu awọn apoti ṣiṣiṣẹ laisi iwulo fun olumulo ti o ni gbongbo.
  • Skopeo: Eyi jẹ ọpa laini aṣẹ ti a lo fun didakọ awọn aworan eiyan lati iforukọsilẹ kan si omiiran. O le lo Skopeo lati daakọ awọn aworan si ati lati gbalejo kan pato bii daakọ awọn aworan si iforukọsilẹ apoti miiran tabi agbegbe. Yato si didakọ awọn aworan, o le lo lati ṣayẹwo awọn aworan lati oriṣiriṣi awọn iforukọsilẹ ati lo awọn ibuwọlu lati ṣẹda ati ṣayẹwo awọn aworan.
  • Buildah: Eyi jẹ ipilẹ ti awọn irinṣẹ laini aṣẹ ti a lo fun ṣiṣẹda ati iṣakoso awọn aworan OCI apo nipa lilo awọn faili Docker.

Ninu nkan yii, a yoo fojusi lori Ṣiṣakoṣo awọn apoti nipa lilo podman ati Skopeo.

Wiwa Awọn aworan Apoti lati Iforukọsilẹ latọna jijin

Aṣẹ wiwa podman ngbanilaaye lati wa awọn iforukọsilẹ latọna jijin ti a yan fun awọn aworan eiyan. A ṣe alaye atokọ aiyipada ti awọn iforukọsilẹ ni faili registries.conf ti o wa ninu/ati be be lo/awọn apoti/itọsọna.

Awọn iforukọsilẹ ti ṣalaye nipasẹ awọn apakan 3.

  • [registries.search] - Abala yii ṣalaye awọn iforukọsilẹ aiyipada ti adarọ ese le wa awọn aworan apoti. O wa aworan ti a beere ni registry.access.redhat.com, registry.redhat.io, ati awọn iforukọsilẹ docker.io.

  • [registries.insecure] - Abala yii ṣalaye awọn iforukọsilẹ ti ko ṣe imuse fifi ẹnọ kọ nkan TLS ie awọn iforukọsilẹ ti ko ni aabo. Nipa aiyipada, ko si awọn titẹ sii ti a ṣalaye.

  • [registries.block] - Awọn bulọọki yii tabi sẹ iraye si awọn iforukọsilẹ ti a ṣalaye lati eto agbegbe rẹ. Nipa aiyipada, ko si awọn titẹ sii ti a ṣalaye.

Gẹgẹbi olumulo deede (ti kii ṣe gbongbo) ti n ṣiṣẹ aṣẹ adarọ-ese, o le ṣalaye faili registries.conf tirẹ lori itọsọna ile rẹ ($HOME/.config/container/registries.conf) lati fagile awọn eto jakejado eto.

Bi o ṣe ṣọkasi awọn iforukọsilẹ, ranti awọn atẹle:

  • Gbogbo iforukọsilẹ yẹ ki o wa ni pipade nipasẹ awọn agbasọ ẹyọkan.
  • Awọn iforukọsilẹ le ṣe pàtó nipa lilo boya orukọ olupin tabi adirẹsi IP.
  • Ti a ba ṣalaye awọn iforukọsilẹ pupọ, lẹhinna wọn yẹ ki o pin nipasẹ awọn aami idẹsẹ.
  • Ti iforukọsilẹ kan ba lo ibudo ti kii ṣe deede - boya ibudo TCP awọn ibudo 443 fun aabo ati 80 fun ailabo, - o yẹ ki o ṣe apejuwe nọmba ibudo pẹlu orukọ iforukọsilẹ fun apẹẹrẹ. registry.example.com:5566.

Lati wa iforukọsilẹ fun aworan eiyan nipa lilo sintasi:

# podman search registry/container_image

Fun apẹẹrẹ, lati wa aworan Redis ninu iforukọsilẹ iforukọsilẹ.redhat.io, pe aṣẹ naa:

# podman search registry.redhat.io/redis

Lati wa fun ṣiṣe aworan eiyan MariaDB kan.

# podman search registry.redhat.io/mariadb

Lati gba apejuwe ti alaye lori aworan apoti kan, lo aṣayan --no-trunc ṣaaju orukọ ti aworan eiyan lati awọn abajade ti o gba. Fun apeere, a yoo gbiyanju lati gba apejuwe alaye ti aworan ohun elo MariaDB bi o ti han:

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

Yiya Awọn aworan Apoti

Fa tabi gbigba awọn aworan eiyan lati iforukọsilẹ latọna jijin nilo ki o kọkọ jẹrisi ṣaaju ohunkohun miiran. Fun apẹẹrẹ, lati gba aworan eiyan MariaDB, wọle akọkọ si iforukọsilẹ Redhat:

# podman login

Pese orukọ olumulo ati ọrọ igbaniwọle rẹ ki o lu ‘Tẹ’ lori bọtini itẹwe rẹ. Ti gbogbo rẹ ba lọ daradara, o yẹ ki o gba ifiranṣẹ ijẹrisi pe wiwọle si iforukọsilẹ naa ṣaṣeyọri.

Login Succeeded!

Bayi, o le fa aworan naa ni lilo sintasi ti a fihan:

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

tọka si alejo latọna jijin tabi iforukọsilẹ ti o pese ibi ipamọ ti awọn aworan eiyan lori TCP <port>. ati <name> lapapo ṣalaye aworan eiyan kan ti o da lori <namespace> ni iforukọsilẹ. Lakotan, aṣayan <agbara> ṣe afihan ẹya ti aworan apoti. Ti ko ba ṣe alaye ẹnikankan, ami aiyipada - tuntun - ti lo.

O ni igbagbogbo niyanju lati ṣafikun awọn iforukọsilẹ ti o gbẹkẹle, iyẹn ni awọn ti o pese fifi ẹnọ kọ nkan ati pe ko gba awọn olumulo alailorukọ laaye lati ṣe awọn iroyin pẹlu awọn orukọ airotẹlẹ.

Lati fa aworan MariaDB, ṣiṣe aṣẹ naa:

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

  • Awọn - iforukọsilẹ.redhat.io
  • Awọn - rhel8
  • Awọn - MariaDB
  • Awọn - 103

Fun fifa awọn aworan eiyan atẹle, ko si ibuwolu wọle siwaju sii ti a beere nitori o ti jẹ otitọ tẹlẹ. Lati fa aworan eiyan Redis kan, ṣiṣẹ ni rọọrun:

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

Kikojọ Eiyan Images

Lọgan ti o ba ti pari fifa awọn aworan, o le wo awọn aworan ti o wa lọwọlọwọ lori olupin rẹ nipa ṣiṣe pipaṣẹ awọn aworan podman.

# podman images

Ṣiṣayẹwo Awọn aworan Apoti

Ṣaaju ṣiṣe apo eiyan kan, o jẹ igbagbogbo imọran lati ṣawari aworan naa ki o loye ohun ti o ṣe. Podman ṣe ayewo awọn titẹ sita aṣẹ jade okun metadata nipa apo eiyan bii OS ati Faaji.

Lati ṣayẹwo aworan kan, ṣiṣe aṣẹ ayẹwo adarọ ese atẹle pẹlu ID aworan tabi ibi ipamọ.

# podman inspect IMAGE ID
OR
# podman inspect REPOSITORY

Ninu apẹẹrẹ ni isalẹ, a n ṣe ayewo ohun elo MariaDB.

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

Lati fa metadata kan pato fun apoti kan kọja aṣayan --format aṣayan atẹle nipa metadata ati idanimọ apoti (ID aworan tabi orukọ).

Ninu apẹẹrẹ ni isalẹ, a n gba alaye nipa faaji ati apejuwe ti apoti ipilẹ RHEL 8 eyiti o ṣubu labẹ apakan ‘Awọn aami’.

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

Lati ṣayẹwo aworan latọna jijin lati iforukọsilẹ miiran, lo aṣẹ ayẹwo skopeo. Ninu apẹẹrẹ ni isalẹ, a n ṣe ayewo aworan init RHEL 8 init ti o gbalejo lori Docker.

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

Atokun Awọn Apoti Eiyan

Bi o ṣe le ṣe akiyesi, awọn orukọ aworan jẹ igbagbogbo jeda ni iseda. Fun apẹẹrẹ, a samisi aworan redis:

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

Awọn fifi aami le awọn aworan fun wọn ni orukọ inu inu diẹ sii lati ni oye daradara ohun ti wọn ni ninu. Lilo aṣẹ tag tag, o le ṣẹda ami aworan eyiti o jẹ pataki inagijẹ si orukọ aworan ti o ni awọn ẹya oriṣiriṣi.

Iwọnyi ni:

registry/username/NAME:tag

Fun apẹẹrẹ, lati yi orukọ jeneriki ti aworan Redis pada ti o ni ID ti 646f2730318c, a yoo ṣe aṣẹ naa:

# podman tag 646f2730318c myredis

Lati ṣafikun ami kan ni ipari append oluṣafihan ni kikun atẹle nipasẹ nọmba taagi:

# podman tag 646f2730318c myredis:5.0

Laisi fifi nọmba tag sii, yoo kan sọtọ abuda tuntun ni.

Ṣiṣe Awọn eiyan Awọn aworan

Lati ṣiṣẹ apo eiyan kan, lo aṣẹ ṣiṣe adarọ ese. Fun apere:

# podman run image_id

Lati ṣiṣe eiyan ni ipalọlọ ni abẹlẹ bi iṣẹ daemon lo aṣayan -d bi o ti han.

# podman run -d image_id

Fun apẹẹrẹ, lati ṣiṣẹ aworan redis pẹlu ID 646f2730318c, a yoo kepe aṣẹ:

# podman run -d 646f2730318c

Ti o ba nṣiṣẹ apoti ti o da lori ẹrọ ṣiṣe bii aworan ipilẹ RHEL 8, o le ni iraye si ikarahun nipa lilo itọsọna -it . Aṣayan -i ṣẹda igba ibaraenisọrọ lakoko ti -t ṣe afihan igba ebute. Aṣayan --name n ṣeto orukọ apo eiyan si mybash lakoko ti o jẹ id aworan ecbc6f53bba0 ti aworan ipilẹ.

# podman run -it --name=mybash ecbc6f53bba0

Lẹhinna, o le ṣiṣe eyikeyi awọn aṣẹ ikarahun. Ninu apẹẹrẹ ni isalẹ, a n rii daju ẹya OS ti aworan apoti.

# cat /etc/os-release

Lati jade kuro ni apo eiyan, nirọrun pe aṣẹ ijade.

# exit

Lọgan ti eiyan ba ti jade, o ma duro laifọwọyi. Lati bẹrẹ eiyan lẹẹkansi, lo aṣẹ ibere adarọ ese pẹlu asia -ai bi o ti han.

# podman start -ai mybash

Lẹẹkan si, eyi fun ọ ni iraye si ikarahun naa.

Kikojọ nṣiṣẹ Images Awọn apoti

Lati ṣe atokọ lọwọlọwọ awọn apoti ti n ṣiṣẹ lọwọlọwọ, lo pipaṣẹ podman ps bi o ti han.

# podman ps

Lati wo gbogbo awọn apoti pẹlu awọn ti o ti jade lẹhin ti nṣiṣẹ, lo aṣẹ:

# podman ps -a

Ṣe atunto Awọn aworan Apoti si Bẹrẹ Laifọwọyi Labẹ Iṣẹ Systemd

Ni apakan yii, a ni idojukọ lori bawo ni a ṣe le tunto eiyan lati ṣiṣẹ taara lori eto RHEL bi iṣẹ eto.

Ni akọkọ, gba aworan ti o fẹ julọ. Ni ọran yii, a ti fa aworan Redis lati ibudo docker:

# podman pull docker.io/redis

Ti o ba ni SELinux ti n ṣiṣẹ lori ẹrọ rẹ, o nilo lati mu apoti_manage_cgroup boolean ṣiṣẹ lati ṣiṣẹ awọn apoti pẹlu eto.

# setsebool -p container_manage_cgroup on

Lẹhinna, ṣiṣe aworan eiyan ni abẹlẹ ki o fi si orukọ aworan ti o fẹ julọ. Ninu apẹẹrẹ yii, a ti lorukọ aworan wa redis_server ati ṣe aworan ibudo 6379 lati inu apo si agbalejo RHEL 8 wa

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

Nigbamii ti, a yoo ṣẹda faili iṣeto ẹrọ ti eto fun redis ninu/ati be be lo/systemd/system/directory.

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

Lẹẹmọ akoonu ti o wa ni isalẹ si faili naa.

[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

Fipamọ ki o jade kuro ni faili naa.

Nigbamii, tunto eiyan lati bẹrẹ laifọwọyi lori bootup.

# systemctl enable redis-container.service

Nigbamii, bẹrẹ eiyan naa ki o jẹrisi ipo ṣiṣiṣẹ rẹ.

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

Ṣe atunto Ipamọ Iduroṣinṣin fun Awọn aworan Apoti

Nigbati o ba n ṣiṣẹ awọn apoti, o jẹ oye lati tunto ibi ipamọ ita itẹramọṣẹ lori alejo naa. Eyi pese afẹyinti ni ọran ti eiyan ba kọlu tabi yọkuro lairotẹlẹ.

Lati tẹsiwaju data naa, a yoo ṣe atokọ itọsọna kan ti o wa ninu ogun si itọsọna kan ninu apo eiyan.

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

Aṣayan - ni ẹtọ ti kọja nigbati a ṣeto SELinux si imuṣẹ. Aṣayan -v ṣalaye iwọn didun ita eyiti o wa lori agbalejo. Iwọn iwọn eiyan nibi ni itọsọna/mnt.

Ni kete ti a ba ti wọle si ikarahun naa, a yoo ṣẹda ayẹwo faili file.txt ninu itọsọna/mnt bi o ti han.

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

Lẹhinna a yoo jade kuro ni apoti eiyan ki a ṣayẹwo boya faili naa wa ni ibi ipamọ ita ti o ngbe lori olupinlejo

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

Ijade ⇒ Awọn idanwo yii ni ifipamọ ipamọ ita.

Idekun ati yiyọ Awọn apoti

Ni kete ti o ba ti pari pẹlu ṣiṣiṣẹ apo eiyan rẹ, o le da a duro nipa lilo pipaṣẹ iduro podman atẹle nipa id eiyan eyiti o le gba lati aṣẹ podman ps.

# podman stop container-id

Lati yọ awọn apoti ti iwọ ko nilo mọ, lakọkọ, rii daju pe o da a duro lẹhinna lẹhinna pe aṣẹ apman rm atẹle pẹlu id apoti tabi orukọ bi aṣayan kan.

# podman rm container-id

Lati yọ awọn apoti pupọ kuro ni lilọ ninu aṣẹ kan, ṣafihan awọn id awọn eiyan ti o yapa nipasẹ aaye kan.

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

Lati ko gbogbo awọn apoti rẹ kuro, ṣiṣe aṣẹ naa:

# podman rm -a

Yọ aworan kan kuro

Lati yọ aworan kan, akọkọ, rii daju pe gbogbo awọn apoti ti o wa lati awọn aworan ti duro ati yọ kuro bi a ti jiroro ninu koko-ọrọ ti tẹlẹ.

Nigbamii, tẹsiwaju ki o ṣiṣẹ adarọ ese -rmi atẹle pẹlu ID ti aworan bi o ti han:

# podman -rmi image-id

Ipari

Eyi ṣe ipari iwe yii lori ṣiṣakoso ati ṣiṣẹ pẹlu awọn apoti ni RHEL 8. A nireti pe itọsọna yii pese oye ti o peye ti awọn apoti ati bii o ṣe le ṣepọ ati ṣakoso wọn lori eto RHEL rẹ nipa lilo podman ati Skopeo.