Указания Π·Π° изпълнСниС Π½Π° Buildah Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€

Каква Π΅ красотата Π½Π° раздСлянСто Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° изпълнСниС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π½Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π½Π° инструмСнта? По-спСциално Ρ„Π°ΠΊΡ‚ΡŠΡ‚, Ρ‡Π΅ Ρ‚Π΅Π·ΠΈ инструмСнти ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ‚ Π΄Π° сС ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΄Π° сС Π·Π°Ρ‰ΠΈΡ‚Π°Π²Π°Ρ‚ Π²Π·Π°ΠΈΠΌΠ½ΠΎ.

Указания Π·Π° изпълнСниС Π½Π° Buildah Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€

Много Ρ…ΠΎΡ€Π° са ΠΏΡ€ΠΈΠ²Π»Π΅Ρ‡Π΅Π½ΠΈ ΠΎΡ‚ идСята Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° изобраТСния Π½Π° OCI ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Kubernetes ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° систСма. Π”Π° ΠΊΠ°ΠΆΠ΅ΠΌ, Ρ‡Π΅ ΠΈΠΌΠ°ΠΌΠ΅ CI / CD, ΠΊΠΎΠΉΡ‚ΠΎ постоянно ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π° изобраТСния, слСд Ρ‚ΠΎΠ²Π° Π½Π΅Ρ‰ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Red Hat OpenShift/Kubernetes Π±ΠΈ Π±ΠΈΠ» ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° балансиранСто Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° компилацията. Доскоро ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ Ρ…ΠΎΡ€Π° просто Π΄Π°Π²Π°Ρ…Π° Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Docker сокСт ΠΈ ΠΈΠΌ позволяваха Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° docker. ΠŸΠΎΠΊΠ°Π·Π°Ρ…ΠΌΠ΅ Π³ΠΎ ΠΏΡ€Π΅Π΄ΠΈ няколко Π³ΠΎΠ΄ΠΈΠ½ΠΈΡ‡Π΅ Ρ‚ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ нСсигурно, Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Π΅ Π΄ΠΎΡ€ΠΈ ΠΏΠΎ-лошо ΠΎΡ‚ Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° root Π±Π΅Π· ΠΏΠ°Ρ€ΠΎΠ»Π° ΠΈΠ»ΠΈ sudo.

Π’Π°ΠΊΠ° Ρ‡Π΅ Ρ…ΠΎΡ€Π°Ρ‚Π° постоянно сС ΠΎΠΏΠΈΡ‚Π²Π°Ρ‚ Π΄Π° стартират Buildah Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. Накратко, ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ…ΠΌΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠ°ΠΊ спорСд нас Π΅ Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€Π΅ Π΄Π° стартиратС Buildah Π²ΡŠΡ‚Ρ€Π΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Ρ…ΠΌΠ΅ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ изобраТСния quay.io/buildah. Π”Π° Π·Π°ΠΏΠΎΡ‡Π²Π°ΠΌΠ΅...

Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€Π°Π½Π΅

Π’Π΅Π·ΠΈ изобраТСния са създадСни ΠΎΡ‚ Dockerfiles, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π½Π° Buildah Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° buildahimage.
Π’ΡƒΠΊ Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ стабилна вСрсия Π½Π° Dockerfile.

# 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

ВмСсто OverlayFS, Π²Π½Π΅Π΄Ρ€Π΅Π½ Π½Π° Π½ΠΈΠ²ΠΎ Linux ядро ​​на хоста, Π½ΠΈΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° Π²ΡŠΡ‚Ρ€Π΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° наслагванС Π½Π° ΠΏΡ€Π΅Π΄ΠΏΠ°Π·ΠΈΡ‚Π΅Π», Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° OverlayFS ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π° само Π°ΠΊΠΎ ΠΌΡƒ Π΄Π°Π΄Π΅Ρ‚Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ SYS_ADMIN Ρ‡Ρ€Π΅Π· Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π½Π° Linux. И Π½ΠΈΠ΅ искамС Π΄Π° стартирамС Π½Π°ΡˆΠΈΡ‚Π΅ Buildah ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π±Π΅Π· Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ root ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ. Fuse-overlay Π΅ доста Π±ΡŠΡ€Π· ΠΈ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ ΠΎΡ‚ VFS Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅. ΠžΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π½Π° Buildah с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Fuse, трябва Π΄Π° бъдС прСдоставСно устройството /dev/fuse.

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

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° създавамС дирСктория Π·Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°. ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€/склад ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° концСпцията Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π·Π° изобраТСния само Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅. НапримСр, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° настроитС област Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ с наслагванС Π½Π° Π΅Π΄Π½Π° машина ΠΈ слСд Ρ‚ΠΎΠ²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ NFS, Π·Π° Π΄Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Ρ‚Π΅ Ρ‚ΠΎΠ²Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½Π° Π΄Ρ€ΡƒΠ³Π° машина ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ изобраТСния ΠΎΡ‚ нСя, Π±Π΅Π· Π΄Π° изтСглятС Ρ‡Ρ€Π΅Π· изтСглянС. ИмамС Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ Ρ‚ΠΎΠ²Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ²ΡŠΡ€ΠΆΠ΅ΠΌ някакво Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π·Π° изобраТСния ΠΎΡ‚ хоста ΠΊΠ°Ρ‚ΠΎ ΠΎΠ±Π΅ΠΌ ΠΈ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π²ΡŠΡ‚Ρ€Π΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

# 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

И накрая, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° Π½Π° срСдата BUILDAH_ISOLATION, Π·Π° Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Buildah Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ с chroot изолация ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅. Π’ΡƒΠΊ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° изолация, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π²Π΅Ρ‡Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. Π—Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Buildah Π΄Π° създадС свои собствСни ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈ ΠΎΡ‚ пространството Π½Π° ΠΈΠΌΠ΅Π½Π°Ρ‚Π°, Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° привилСгия SYS_ADMIN, ΠΊΠΎΠ΅Ρ‚ΠΎ Π±ΠΈ изисквало Ρ€Π°Π·Ρ…Π»Π°Π±Π²Π°Π½Π΅ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° SELinux ΠΈ SECCOMP Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π±ΠΈ Π±ΠΈΠ»ΠΎ Π² ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ с Π½Π°ΡˆΠ°Ρ‚Π° настройка Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ ΠΎΡ‚ Π·Π°Ρ‰ΠΈΡ‚Π΅Π½ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.

Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΉΡ‚Π΅ Buildah Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€

ΠžΠ±ΡΡŠΠ΄Π΅Π½Π°Ρ‚Π° ΠΏΠΎ-Π³ΠΎΡ€Π΅ схСма Π·Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Buildah Π²ΠΈ позволява гъвкаво Π΄Π° промСнятС Π½Π°Ρ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡ‚ΠΎ сС стартират Ρ‚Π°ΠΊΠΈΠ²Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ.

Бкорост срСщу бСзопасност

ΠšΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€Π½Π°Ρ‚Π° сигурност Π²ΠΈΠ½Π°Π³ΠΈ Π΅ компромис ΠΌΠ΅ΠΆΠ΄Ρƒ скоростта Π½Π° Π΄Π°Π΄Π΅Π½ процСс ΠΈ стСпСнта Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π°, която Π΅ ΠΎΠ±Π²ΠΈΡ‚Π° ΠΎΠΊΠΎΠ»ΠΎ Π½Π΅Π³ΠΎ. Π’ΠΎΠ²Π° Ρ‚Π²ΡŠΡ€Π΄Π΅Π½ΠΈΠ΅ Π΅ вярно ΠΈ ΠΏΡ€ΠΈ сглобяванСто Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈ Π·Π° Ρ‚Π°ΠΊΡŠΠ² компромис.

Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, обсъдСно ΠΏΠΎ-Π³ΠΎΡ€Π΅, Ρ‰Π΅ Π·Π°ΠΏΠ°Π·ΠΈ своСто Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π² /var/lib/containers. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ трябва Π΄Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°ΠΌΠ΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅ Π² Ρ‚Π°Π·ΠΈ ΠΏΠ°ΠΏΠΊΠ° ΠΈ Π½Π°Ρ‡ΠΈΠ½ΡŠΡ‚, ΠΏΠΎ ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠΌ Ρ‚ΠΎΠ²Π°, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Ρ‰Π΅ повлияС Π½Π° скоростта Π½Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° изобраТСния Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ.

НСка Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Ρ‚Ρ€ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°.

ΠžΠΏΡ†ΠΈΡ 1. Ако сС изисква максимална сигурност, Ρ‚ΠΎΠ³Π°Π²Π° Π·Π° всСки ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ своя собствСна ΠΏΠ°ΠΏΠΊΠ° Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ / ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π΄Π° я ΡΠ²ΡŠΡ€ΠΆΠ΅Ρ‚Π΅ към ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Ρ‡Ρ€Π΅Π· Ρ‚ΠΎΠΌ-ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅. И освСн Ρ‚ΠΎΠ²Π° поставСтС контСкстната дирСктория Π² самия ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° /build:

# 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

Security. Buildah, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ Π² Ρ‚Π°ΠΊΡŠΠ² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΈΠΌΠ° максимална сигурност: Π½Π΅ ΠΌΡƒ сС Π΄Π°Π²Π°Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ root ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ ΠΎΡ‚ способности ΠΈ всички ограничСния Π½Π° SECOMP ΠΈ SELinux сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ към Π½Π΅Π³ΠΎ.Вакъв ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΌΠΎΠΆΠ΅ Π΄ΠΎΡ€ΠΈ Π΄Π° сС изпълнява с изолация Π½Π° потрСбитСлското пространство Ρ‡Ρ€Π΅Π· добавянС Π½Π° опция ΠΊΠ°Ρ‚ΠΎ --uidmap 0:100000:10000.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚. Но производитСлността Ρ‚ΡƒΠΊ Π΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ всички изобраТСния ΠΎΡ‚ рСгистритС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ сС ΠΊΠΎΠΏΠΈΡ€Π°Ρ‚ Π½Π° хоста всСки ΠΏΡŠΡ‚ ΠΈ ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΎΡ‚ Π΄ΡƒΠΌΠ°Ρ‚Π° β€žΠ½ΡΠΌΠ° Π½Π°Ρ‡ΠΈΠ½β€œ. ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° си, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΡŠΡ‚ Buildah трябва Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€Π° ΠΈ Π΄Π° ΡƒΠ½ΠΈΡ‰ΠΎΠΆΠΈ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° хоста. БлСдващият ΠΏΡŠΡ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° бъдС ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½ΠΎ, Ρ‚ΠΎ Ρ‰Π΅ трябва Π΄Π° бъдС ΠΈΠ·Ρ‚Π΅Π³Π»Π΅Π½ΠΎ ΠΎΡ‚Π½ΠΎΠ²ΠΎ ΠΎΡ‚ Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€Π°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π΄ΠΎ Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚ няма Π΄Π° останС Π½ΠΈΡ‰ΠΎ Π½Π° хоста.

ΠžΠΏΡ†ΠΈΡ 2. Ако ΠΈΠΌΠ°Ρ‚Π΅ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ производитСлност Π½Π° Π½ΠΈΠ²ΠΎ Docker, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Ρ‚Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°/ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° хоста Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

# 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

Security. Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-ΠΌΠ°Π»ΠΊΠΎ сигурният Π½Π°Ρ‡ΠΈΠ½ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ позволява Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π΄Π° промСня Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π½Π° хоста ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° вмъкнС Π·Π»ΠΎΠ½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Podman ΠΈΠ»ΠΈ CRI-O. ОсвСн Ρ‚ΠΎΠ²Π° Ρ‰Π΅ трябва Π΄Π° Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ раздСлянСто Π½Π° SELinux, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ процСситС Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Buildah Π΄Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° взаимодСйстват с Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π½Π° хоста. ΠžΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ Ρ‚Π°Π·ΠΈ опция всС ΠΎΡ‰Π΅ Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π° ΠΎΡ‚ Docker сокСт, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΡŠΡ‚ Π΅ Π±Π»ΠΎΠΊΠΈΡ€Π°Π½ ΠΎΡ‚ останалитС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° сигурност ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ просто Π΄Π° Π²Π·Π΅ΠΌΠ΅ ΠΈ стартира всСки ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π½Π° хоста.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚. Π’ΡƒΠΊ Π΅ ΠΌΠ°ΠΊΡΠΈΠΌΡƒΠΌΡŠΡ‚, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π΅ изцяло Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ. Ако Podman ΠΈΠ»ΠΈ CRI-O Π²Π΅Ρ‡Π΅ са ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈΠ»ΠΈ ΠΆΠ΅Π»Π°Π½ΠΎΡ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° хоста, Ρ‚ΠΎΠ³Π°Π²Π° ΠΏΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ Buildah Π²ΡŠΡ‚Ρ€Π΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° няма Π΄Π° трябва Π΄Π° Π³ΠΎ изтСгля ΠΎΡ‚Π½ΠΎΠ²ΠΎ ΠΈ слСдващитС ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΠΈ, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° Ρ‚ΠΎΠ²Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΡΡŠΡ‰ΠΎ Ρ‰Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π²Π·Π΅ΠΌΠ°Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡ‚ΠΎ ΠΎΡ‚ кСша .

ΠžΠΏΡ†ΠΈΡ 3. Π‘ΡŠΡ‰Π½ΠΎΡΡ‚Ρ‚Π° Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΅ Π΄Π° сС ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚ няколко изобраТСния Π² Π΅Π΄ΠΈΠ½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΎΠ±Ρ‰Π° ΠΏΠ°ΠΏΠΊΠ° Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½ΠΈ изобраТСния.

# 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

Π’ Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΈΠ΅ Π½Π΅ ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°ΠΌΠ΅ ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (/var/lib/project3) ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΡΡ‚Π°, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ всички слСдващи ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΠΈ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° сС Π²ΡŠΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΎΡ‚ ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ.

Security. НСщо ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠΏΡ†ΠΈΠΈ 1 ΠΈ 2. ΠžΡ‚ Π΅Π΄Π½Π° страна, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ нямат Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° хоста ΠΈ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΏΡŠΡ…Π½Π°Ρ‚ Π½Π΅Ρ‰ΠΎ лошо Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π½Π° изобраТСния Podman / CRI-O. ΠžΡ‚ Π΄Ρ€ΡƒΠ³Π° страна, Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° собствСния си ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΏΡ€Π΅Ρ‡ΠΈ Π½Π° сглобяванСто Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚. Π’ΡƒΠΊ Π΅ ΠΏΠΎ-лошо ΠΎΡ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° сподСлСн кСш Π½Π° Π½ΠΈΠ²ΠΎ хост, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ изобраТСния, ΠΊΠΎΠΈΡ‚ΠΎ Π²Π΅Ρ‡Π΅ са ΠΈΠ·Ρ‚Π΅Π³Π»Π΅Π½ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Podman / CRI-O. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, слСд ΠΊΠ°Ρ‚ΠΎ Buildah ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Ρ‚ΠΎΠ²Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° във всички слСдващи ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΠΈ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ място Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅

Π£ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ/склад ΠΈΠΌΠ° Ρ‚Π°ΠΊΠΎΠ²Π° страхотно Π½Π΅Ρ‰ΠΎ ΠΊΠ°Ρ‚ΠΎ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΈ (Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΈ), Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€ΠΈ стартиранС ΠΈ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΠΈΡ‚Π΅ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ външни Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π·Π° изобраТСния Π² Ρ€Π΅ΠΆΠΈΠΌ Π½Π° наслагванС само Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅. Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Π΅Π΄Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° само Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅ към Ρ„Π°ΠΉΠ»Π° storage.conf, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΡŠΡ‚ стартира, ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π° Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Ρ‰Π΅ Ρ‚ΡŠΡ€ΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΎΡ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² тях. ОсвСн Ρ‚ΠΎΠ²Π°, Ρ‚ΠΎΠΉ Ρ‰Π΅ ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΎΡ‚ Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€Π° само Π°ΠΊΠΎ Π½Π΅ Π³ΠΎ Π½Π°ΠΌΠ΅Ρ€ΠΈ Π² Π½ΠΈΡ‚ΠΎ Π΅Π΄Π½ΠΎ ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½ΠΈΡΡ‚ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π» Ρ‰Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° записва само Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π·Π° запис...

Ако ΠΏΡ€Π΅Π²ΡŠΡ€Ρ‚ΠΈΠΌ Π½Π°Π³ΠΎΡ€Π΅ ΠΈ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ Dockerfile, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ quay.io/buildah/stable, ΠΈΠΌΠ° Ρ€Π΅Π΄ΠΎΠ²Π΅ ΠΊΠ°Ρ‚ΠΎ Ρ‚ΠΎΠ·ΠΈ:

# 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

На ΠΏΡŠΡ€Π²ΠΈΡ Ρ€Π΅Π΄ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°ΠΌΠ΅ /etc/containers/storage.conf Π² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, ΠΊΠ°Ρ‚ΠΎ ΠΊΠ°Π·Π²Π°ΠΌΠ΅ Π½Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° β€žadditionalimagestoresβ€œ Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° /var/lib/shared. И Π² слСдващия Ρ€Π΅Π΄ създавамС сподСлСна ΠΏΠ°ΠΏΠΊΠ° ΠΈ добавямС няколко Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‰ΠΈ Ρ„Π°ΠΉΠ»Π°, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΄Π° няма Π·Π»ΠΎΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ / Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. По ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ Π½ΠΈΠ΅ просто създавамС ΠΏΡ€Π°Π·Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π·Π° изобраТСния Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.

Ако ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Ρ‚Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ/ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½ΠΈΠ²ΠΎ Π½Π°Π΄ Ρ‚Π°Π·ΠΈ ΠΏΠ°ΠΏΠΊΠ°, Buildah Ρ‰Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° изобраТСнията.

Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° сС Π²ΡŠΡ€Π½Π΅ΠΌ към Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 2, обсъдСн ΠΏΠΎ-Π³ΠΎΡ€Π΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΡŠΡ‚ Buildah ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ‡Π΅Ρ‚Π΅ ΠΈ записва Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ / Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π½Π° хостовС ΠΈ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ ΠΈΠΌΠ° максимална производитСлност ΠΏΠΎΡ€Π°Π΄ΠΈ ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅ Π½Π° изобраТСния Π½Π° Π½ΠΈΠ²ΠΎ Podman / CRI-O, Π½ΠΎ Π΄Π°Π²Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° сигурност, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° пишС Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ. И сСга Ρ‰Π΅ Π·Π°Π²ΠΈΠ½Ρ‚ΠΈΠΌ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ място Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ‚ΡƒΠΊ ΠΈ Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€ΠΎΡ‚ΠΎ ΠΎΡ‚ Π΄Π²Π°Ρ‚Π° свята.

# 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

Π˜ΠΌΠ°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄, Ρ‡Π΅ /var/lib/containers/storage Π½Π° хоста Π΅ ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½ към /var/lib/shared Π²ΡŠΡ‚Ρ€Π΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π² Ρ€Π΅ΠΆΠΈΠΌ само Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, Ρ€Π°Π±ΠΎΡ‚Π΅ΠΉΠΊΠΈ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, Buildah ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° всякакви изобраТСния, ΠΊΠΎΠΈΡ‚ΠΎ Π²Π΅Ρ‡Π΅ са ΠΈΠ·Ρ‚Π΅Π³Π»Π΅Π½ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Podman / CRI-O (Π·Π΄Ρ€Π°Π²Π΅ΠΉ, скорост), Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° пишС само Π² собствСното си Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ (Π·Π΄Ρ€Π°Π²Π΅ΠΉ, сигурност). Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΈΠΌΠ°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° сС ΠΏΡ€Π°Π²ΠΈ Π±Π΅Π· Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° раздСлянСто Π½Π° SELinux Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

Π’Π°ΠΆΠ΅Π½ нюанс

ΠŸΡ€ΠΈ Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ обстоятСлства Π½Π΅ трябва Π΄Π° сС ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ изобраТСния ΠΎΡ‚ основното Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΡŠΡ‚ Buildah ΠΌΠΎΠΆΠ΅ Π΄Π° сС сринС.

И Ρ‚ΠΎΠ²Π° Π½Π΅ са всички прСдимства.

Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π·Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π΅ сС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Ρ‚ Π΄ΠΎ горния сцСнарий. НапримСр, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° поставитС всички изобраТСния Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π² сподСлСно ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈ Π΄Π° Π΄Π°Π΄Π΅Ρ‚Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π½Π΅Π³ΠΎ Π½Π° всички ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π½Π° Buildah. Π”Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ΅ΠΌ, Ρ‡Π΅ ΠΈΠΌΠ°ΠΌΠ΅ стотици изобраТСния, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π°ΡˆΠ°Ρ‚Π° CI/CD систСма Ρ€Π΅Π΄ΠΎΠ²Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½ΠΈ изобраТСния. НиС ΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€Π°ΠΌΠ΅ всички Ρ‚Π΅Π·ΠΈ изобраТСния Π½Π° Π΅Π΄ΠΈΠ½ хост Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ слСд Ρ‚ΠΎΠ²Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π½ΠΈΡ‚Π΅ инструмСнти Π·Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎ ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ (NFS, Gluster, Ceph, iSCSI, S3 ...), сподСлямС Ρ‚ΠΎΠ²Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ с всички възли Π½Π° Buildah ΠΈΠ»ΠΈ Kubernetes.

Π‘Π΅Π³Π° Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π΄Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Ρ‚Π΅ Ρ‚ΠΎΠ²Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π½Π° Buildah Π½Π° /var/lib/shared ΠΈ Ρ‚ΠΎΠ²Π° Π΅ - ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ Π½Π° Buildah Π²Π΅Ρ‡Π΅ ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Π½Π΅ трябва Π΄Π° изтСглят изобраТСния Ρ‡Ρ€Π΅Π· изтСглянС. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ Π½ΠΈΠ΅ ΠΈΠ·Ρ…Π²ΡŠΡ€Π»ΡΠΌΠ΅ Ρ„Π°Π·Π°Ρ‚Π° ΠΏΡ€Π΅Π΄ΠΈ популацията ΠΈ Π²Π΅Π΄Π½Π°Π³Π° смС Π³ΠΎΡ‚ΠΎΠ²ΠΈ Π΄Π° Ρ€Π°Π·Π³ΡŠΡ€Π½Π΅ΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅.

И Ρ€Π°Π·Π±ΠΈΡ€Π° сС, Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Π°ΠΊΡ‚ΠΈΠ²Π½Π° систСма Π½Π° Kubernetes ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½Π° инфраструктура Π·Π° стартиранС ΠΈ стартиранС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ навсякъдС Π±Π΅Π· изтСглянС Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. ОсвСн Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ насочСна заявка Π·Π° ΠΊΠ°Ρ‡Π²Π°Π½Π΅ Π½Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π½Π΅Π³ΠΎ, Ρ‚ΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈ Ρ‚ΠΎΠ²Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² сподСлСно ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π΅ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎ Π·Π° всички възли.

Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡΡ‚Π° Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ понякога ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ с Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚Π°. Ѐункционалността Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈΡ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π° нСобходимостта ΠΎΡ‚ ΠΊΠ»ΠΎΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚Π°ΠΊΠΈΠ²Π° изобраТСния ΠΎΡ‚ възли ΠΈ ΠΏΡ€Π°Π²ΠΈ стартиранСто Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΌΠΈΠ³Π½ΠΎΠ²Π΅Π½ΠΎ.

ОсвСн Ρ‚ΠΎΠ²Π° Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ Π²ΡŠΡ€Ρ…Ρƒ Π½ΠΎΠ²Π° функция Π·Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΌΠ½ΠΈ наслагвания, която Ρ‰Π΅ Π½Π°ΠΏΡ€Π°Π²ΠΈ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΎΡ‰Π΅ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π˜Π·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Buildah Π²ΡŠΡ‚Ρ€Π΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π² Kubernetes/CRI-O срСда, Podman ΠΈΠ»ΠΈ Π΄ΠΎΡ€ΠΈ Docker Π΅ напълно възмоТно ΠΈ Π΅ просто ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-бСзопасно ΠΎΡ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° docker.socket. Π£Π²Π΅Π»ΠΈΡ‡ΠΈΡ…ΠΌΠ΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π³ΡŠΠ²ΠΊΠ°Π²ΠΎΡΡ‚Ρ‚Π° ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с изобраТСния ΠΈ сСга ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚Π΅ ΠΏΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π½Π°Ρ‡ΠΈΠ½ΠΈ Π·Π° Π½Π°ΠΉ-Π΄ΠΎΠ±ΡŠΡ€ баланс ΠΌΠ΅ΠΆΠ΄Ρƒ сигурност ΠΈ производитСлност.

Ѐункционалността Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈΡ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π²ΠΈ позволява Π΄Π° ускоритС ΠΈΠ»ΠΈ Π΄ΠΎΡ€ΠΈ напълно Π΄Π° ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅Ρ‚Π΅ изтСглянСто Π½Π° изобраТСния към Π²ΡŠΠ·Π»ΠΈΡ‚Π΅.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€