Kini ẹwa ti yiya sọtọ akoko asiko eiyan sinu awọn paati irinṣẹ lọtọ? Ni pato, otitọ pe awọn irinṣẹ wọnyi le bẹrẹ lati ni idapo ki wọn le dabobo ara wọn.
Ọpọlọpọ eniyan ni ifamọra nipasẹ imọran ti kikọ awọn aworan eiyan OCI laarin
Nitorinaa awọn eniyan n gbiyanju nigbagbogbo lati ṣiṣe Buildah ninu apoti kan. Ni kukuru, a ti ṣẹda
Ṣe akanṣe
Awọn aworan wọnyi ni a kọ lati Dockerfiles, eyiti o le rii ni ibi ipamọ Buildah ninu folda naa
Nibi ti a yoo ro
# stable/Dockerfile
#
# Build a Buildah container image from the latest
# stable version of Buildah on the Fedoras Updates System.
# https://bodhi.fedoraproject.org/updates/?search=buildah
# This image can be used to create a secured container
# that runs safely with privileges within the container.
#
FROM fedora:latest
# Don't include container-selinux and remove
# directories used by dnf that are just taking
# up space.
RUN yum -y install buildah fuse-overlayfs --exclude container-selinux; rm -rf /var/cache /var/log/dnf* /var/log/yum.*
# Adjust storage.conf to enable Fuse storage.
RUN sed -i -e 's|^#mount_program|mount_program|g' -e '/additionalimage.*/a "/var/lib/shared",' /etc/containers/storage.conf
Dipo OverlayFS, ti a ṣe ni ipele ti ekuro Linux ti agbalejo, a lo eto naa inu eiyan naa.
podman run --device /dev/fuse quay.io/buildahctr ...
RUN mkdir -p /var/lib/shared/overlay-images /var/lib/shared/overlay-layers; touch /var/lib/shared/overlay-images/images.lock; touch /var/lib/shared/overlay-layers/layers.lock
Nigbamii ti, a ṣẹda itọsọna kan fun awọn ibi ipamọ afikun.
# Set up environment variables to note that this is
# not starting with user namespace and default to
# isolate the filesystem with chroot.
ENV _BUILDAH_STARTED_IN_USERNS="" BUILDAH_ISOLATION=chroot
Nikẹhin, a lo BUILDAH_ISOLATION oniyipada ayika lati sọ fun apoti Buildah lati bẹrẹ pẹlu ipinya chroot nipasẹ aiyipada. Afikun ipinya ko nilo nibi, nitori a ti n ṣiṣẹ tẹlẹ ninu apoti kan. Ni ibere fun Buildah lati ṣẹda awọn apoti ti o ya sọtọ orukọ tirẹ, anfani SYS_ADMIN ni a nilo, eyiti yoo nilo ṣiṣi silẹ awọn ofin SELinux ati SECCOMP ti eiyan naa, eyiti yoo tako pẹlu iṣeto wa lati kọ lati inu apoti to ni aabo.
Ṣiṣe Buildah inu apo eiyan kan
Eto aworan eiyan Buildah ti a jiroro loke gba ọ laaye lati ni irọrun yatọ bi iru awọn apoti ṣe ṣe ifilọlẹ.
Iyara dipo ailewu
Aabo Kọmputa nigbagbogbo jẹ adehun laarin iyara ti ilana kan ati iye aabo ti a we ni ayika rẹ. Gbólóhùn yii tun jẹ otitọ nigbati o ba ṣajọpọ awọn apoti, nitorinaa ni isalẹ a yoo gbero awọn aṣayan fun iru adehun.
Aworan apoti ti a jiroro loke yoo tọju ibi ipamọ rẹ sinu /var/lib/awọn apoti. Nitorinaa, a nilo lati gbe akoonu si folda yii, ati bii a ṣe ṣe eyi yoo ni ipa pupọ iyara ti awọn aworan eiyan ile.
Ẹ jẹ́ ká gbé ọ̀nà mẹ́ta yẹ̀ wò.
Aṣayan 1. Ti o ba nilo aabo ti o pọju, lẹhinna fun eiyan kọọkan o le ṣẹda folda tirẹ fun awọn apoti / aworan ki o so pọ si eiyan nipasẹ iwọn didun. Ati ni afikun, gbe itọsọna ọrọ-ọrọ sinu eiyan funrararẹ, ninu folda / kọ:
# mkdir /var/lib/containers1
# podman run -v ./build:/build:z -v /var/lib/containers1:/var/lib/containers:Z quay.io/buildah/stable
buildah -t image1 bud /build
# podman run -v /var/lib/containers1:/var/lib/containers:Z quay.io/buildah/stable buildah push image1 registry.company.com/myuser
# rm -rf /var/lib/containers1
Aabo. Buildah ti n ṣiṣẹ ninu iru eiyan ni aabo ti o pọju: ko fun ni awọn anfani gbongbo eyikeyi nipasẹ awọn agbara, ati gbogbo awọn ihamọ SECOMP ati SELinux kan si rẹ. 0:100000:10000.
Išẹ. Ṣugbọn iṣẹ ti o wa nibi jẹ iwonba, nitori eyikeyi awọn aworan lati awọn iforukọsilẹ eiyan ni a daakọ si agbalejo ni akoko kọọkan, ati caching ko ṣiṣẹ lati ọrọ naa “ko si ọna”. Nigbati o ba pari iṣẹ rẹ, eiyan Buildah gbọdọ fi aworan ranṣẹ si iforukọsilẹ ati ki o run akoonu lori agbalejo naa. Nigbamii ti aworan eiyan ti kọ, yoo ni lati ṣe igbasilẹ lẹẹkansii lati iforukọsilẹ, nitori pe ko si nkankan ti yoo fi silẹ lori agbalejo naa ni akoko yẹn.
Aṣayan 2. Ti o ba nilo iṣẹ ipele Docker, o le gbe eiyan / ibi ipamọ agbalejo taara sinu eiyan naa.
# podman run -v ./build:/build:z -v /var/lib/containers:/var/lib/containers --security-opt label:disabled quay.io/buildah/stable buildah -t image2 bud /build
# podman run -v /var/lib/containers:/var/lib/containers --security-opt label:disabled quay.io/buildah/stable buildah push image2 registry.company.com/myuser
Aabo. Eyi ni ọna ti o ni aabo ti o kere julọ lati kọ awọn apoti, bi o ṣe gba eiyan laaye lati yipada ibi ipamọ lori agbalejo ati pe o le fa aworan irira sinu Podman tabi CRI-O. Ni afikun, iwọ yoo nilo lati mu iyapa SELinux kuro ki awọn ilana ti o wa ninu apoti Buildah le ṣe ajọṣepọ pẹlu ibi ipamọ lori agbalejo naa. Ṣe akiyesi pe aṣayan yii tun dara julọ ju iho Docker kan, bi apoti ti dina nipasẹ awọn ẹya aabo ti o ku ati pe ko le gbe soke nikan ati ṣiṣe eyikeyi eiyan lori agbalejo naa.
Išẹ. Nibi o pọju, niwon caching ti ni ipa ni kikun. Ti Podman tabi CRI-O ti ṣe igbasilẹ aworan ti o fẹ tẹlẹ si agbalejo, lẹhinna ilana Buildah inu eiyan naa kii yoo ni lati ṣe igbasilẹ lẹẹkansii, ati awọn ipilẹ ti o tẹle ti o da lori aworan yii yoo tun ni anfani lati mu ọkan pataki lati kaṣe naa. .
Aṣayan 3. Ohun pataki ti ọna yii ni lati darapo awọn aworan pupọ sinu iṣẹ akanṣe kan pẹlu folda ti o wọpọ fun awọn aworan eiyan.
# mkdir /var/lib/project3
# podman run --security-opt label_level=s0:C100, C200 -v ./build:/build:z
-v /var/lib/project3:/var/lib/containers:Z quay.io/buildah/stable buildah -t image3 bud /build
# podman run --security-opt label_level=s0:C100, C200
-v /var/lib/project3:/var/lib/containers quay.io/buildah/stable buildah push image3 registry.company.com/myuser
Ni apẹẹrẹ yii, a ko paarẹ folda ise agbese (/ var / lib/project3) laarin awọn ṣiṣe, nitorinaa gbogbo awọn igbekalẹ ti o tẹle laarin iṣẹ akanṣe lo anfani ti caching.
Aabo. Nkankan laarin awọn aṣayan 1 ati 2. Ni apa kan, awọn apoti ko ni iwọle si akoonu lori agbalejo ati, ni ibamu, ko le isokuso nkan buburu sinu ibi ipamọ aworan Podman / CRI-O. Ni apa keji, laarin iṣẹ akanṣe tirẹ, eiyan le dabaru pẹlu apejọ awọn apoti miiran.
Išẹ. Nibi o buru ju lilo kaṣe pinpin ni ipele agbalejo, nitori o ko le lo awọn aworan ti o ti ṣe igbasilẹ tẹlẹ nipa lilo Podman / CRI-O. Bibẹẹkọ, ni kete ti Buildah ti ṣe igbasilẹ aworan naa, aworan yẹn le ṣee lo ni eyikeyi awọn itumọ ti o tẹle laarin iṣẹ akanṣe naa.
Afikun ipamọ
У
Ti a ba yi lọ si oke ati wo Dockerfile ti a lo lati kọ aworan quay.io/buildah/stable, awọn ila bii eyi wa:
# Adjust storage.conf to enable Fuse storage.
RUN sed -i -e 's|^#mount_program|mount_program|g' -e '/additionalimage.*/a "/var/lib/shared",' /etc/containers/storage.conf
RUN mkdir -p /var/lib/shared/overlay-images /var/lib/shared/overlay-layers; touch /var/lib/shared/overlay-images/images.lock; touch /var/lib/shared/overlay-layers/layers.lock
Lori laini akọkọ, a ṣe atunṣe /etc/containers/storage.conf inu aworan eiyan, sọ fun awakọ ipamọ lati lo "additionalimagestores" ninu folda / var / lib / pínpín. Ati ni laini atẹle, a ṣẹda folda ti o pin ati ṣafikun tọkọtaya awọn faili titiipa ki ko si ilokulo lati awọn apoti / ibi ipamọ. Ni pataki, a kan n ṣẹda ile itaja aworan eiyan ti o ṣofo.
Ti o ba gbe awọn apoti / ibi ipamọ ipele kan loke folda yii, Buildah yoo ni anfani lati lo awọn aworan naa.
Bayi jẹ ki a pada si Aṣayan 2 ti a sọrọ loke, nigbati apoti Buildah le ka ati kọ si awọn apoti / itaja lori awọn ọmọ-ogun ati, ni ibamu, ni iṣẹ ṣiṣe ti o pọju nitori caching aworan ni ipele Podman / CRI-O, ṣugbọn o fun ni aabo to kere ju, niwon o le kọ taara ni ipamọ. Ati ni bayi a yoo dabaru ni ibi ipamọ afikun nibi ati gba ohun ti o dara julọ ti awọn agbaye mejeeji.
# mkdir /var/lib/containers4
# podman run -v ./build:/build:z -v /var/lib/containers/storage:/var/lib/shared:ro -v /var/lib/containers4:/var/lib/containers:Z quay.io/buildah/stable
buildah -t image4 bud /build
# podman run -v /var/lib/containers/storage:/var/lib/shared:ro
-v >/var/lib/containers4:/var/lib/containers:Z quay.io/buildah/stable buildah push image4 registry.company.com/myuser
# rm -rf /var/lib/continers4
Ṣe akiyesi pe ogun / var / lib / awọn apoti / ibi ipamọ ti wa ni gbigbe si / var / lib / pinpin inu apoti ni ipo kika-nikan. Nitorinaa, ṣiṣẹ ninu apo eiyan, Buildah le lo eyikeyi awọn aworan ti o ti gba lati ayelujara tẹlẹ nipa lilo Podman / CRI-O (hello, iyara), ṣugbọn o le kọ nikan si ibi ipamọ tirẹ (hello, aabo). Tun ṣe akiyesi pe eyi ni a ṣe laisi piparẹ iyapa SELinux fun eiyan naa.
Nuance pataki kan
Labẹ ọran kankan ko yẹ ki o paarẹ eyikeyi awọn aworan lati ibi ipamọ ti o wa labẹ. Bibẹẹkọ, apoti Buildah le ṣubu.
Ati pe kii ṣe gbogbo awọn anfani.
Awọn aye fun afikun ibi ipamọ ko ni opin si oju iṣẹlẹ ti o wa loke. Fun apẹẹrẹ, o le gbe gbogbo awọn aworan eiyan sinu ibi ipamọ nẹtiwọọki pinpin ati fun ni iwọle si gbogbo awọn apoti Buildah. Jẹ ki a sọ pe a ni awọn ọgọọgọrun awọn aworan ti eto CI/CD wa nigbagbogbo nlo lati kọ awọn aworan apoti. A ṣojumọ gbogbo awọn aworan wọnyi lori ibi-itọju ibi-itọju ẹyọkan ati lẹhinna, lilo awọn irinṣẹ ibi ipamọ nẹtiwọọki ti o fẹ julọ (NFS, Gluster, Ceph, iSCSI, S3 ...), pin ibi ipamọ yii pẹlu gbogbo awọn apa Buildah tabi Kubernetes.
Bayi o to lati gbe ibi ipamọ nẹtiwọọki yii sinu eiyan Buildah lori / var / lib / pinpin ati pe iyẹn - Awọn apoti Buildah ko ni lati ṣe igbasilẹ awọn aworan nipasẹ fifa ni gbogbo. Nitorinaa, a jabọ ipele iṣaaju-olugbe jade ati pe o ṣetan lẹsẹkẹsẹ lati yi awọn apoti jade.
Ati pe dajudaju, eyi le ṣee lo laarin eto Kubernetes laaye tabi awọn amayederun eiyan lati ṣe ifilọlẹ ati ṣiṣe awọn apoti nibikibi laisi fifa aworan eyikeyi. Pẹlupẹlu, nigbati iforukọsilẹ eiyan ba gba ibeere titari lati gbe aworan imudojuiwọn sori rẹ, o le fi aworan yii ranṣẹ laifọwọyi si ibi ipamọ nẹtiwọọki ti o pin, nibiti o ti wa lẹsẹkẹsẹ si gbogbo awọn apa.
Awọn aworan apoti le jẹ ọpọlọpọ gigabytes nigba miiran ni iwọn. Awọn iṣẹ-ṣiṣe ti awọn ibi ipamọ afikun ṣe imukuro iwulo fun didi iru awọn aworan nipasẹ awọn apa ati ki o jẹ ki ifilọlẹ awọn apoti ti fẹrẹẹ jẹ lẹsẹkẹsẹ.
Ni afikun, a n ṣiṣẹ lọwọlọwọ lori ẹya tuntun ti iwọn iwọn apọju ti yoo jẹ ki awọn apoti ile paapaa yiyara.
ipari
Ṣiṣe Buildah inu apo eiyan kan ni agbegbe Kubernetes/CRI-O, Podman, tabi paapaa Docker ṣee ṣe, ati pe o rọrun ati ailewu pupọ ju lilo docker.socket. A ti pọ pupọ ni irọrun ti ṣiṣẹ pẹlu awọn aworan, ati bayi o le ṣiṣe wọn ni awọn ọna pupọ fun iwọntunwọnsi ti o dara julọ laarin aabo ati iṣẹ.
Iṣẹ ṣiṣe ti awọn ibi ipamọ afikun gba ọ laaye lati yara tabi paapaa imukuro igbasilẹ awọn aworan si awọn apa.
orisun: www.habr.com