ΠŸΡ€Π΅ΠΏΠΎΡ€ΡŠΠΊΠΈ Π·Π° стартиранС Π½Π° Buildah Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€

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

ΠŸΡ€Π΅ΠΏΠΎΡ€ΡŠΠΊΠΈ Π·Π° стартиранС Π½Π° Buildah Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€

Много Ρ…ΠΎΡ€Π° сС ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚ ΠΎΡ‚ идСята Π΄Π° изградят ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½ΠΈ OCI-ΠΎΠ±Ρ€Π°Π·ΠΈ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Kubernetes ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° систСма. Π”Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Π΅ ΠΈΠΌΠ°ΠΌΠ΅ CI/CD, ΠΊΠΎΠ΅Ρ‚ΠΎ постоянно ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π° ΠΎΠ±Ρ€Π°Π·ΠΈ, Ρ‚ΠΎΠ³Π°Π²Π° Π½Π΅Ρ‰ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Red Hat OpenShift/Kubernetes Π±Ρ‹Π»ΠΎ Π±Ρ‹ вСсьма ΠΏΠΎΠ»Π΅Π·Π½ΠΎ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния распрСдСлСния Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€ΠΈ сборкС. Π”ΠΎ Π½Π΅Π΄Π°Π²Π½ΠΈΡ… ΠΏΠΎΡ€ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ людСй просто Π΄Π°Π²Π°Π»ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌ доступ ΠΊ Docker-сокСту ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ docker build. НиС Π²Π΅Ρ‡Π΅ ΠΏΡ€Π΅Π΄ΠΈ няколко Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ…ΠΌΠ΅, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ нСсигурно, Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚, Ρ‚ΠΎΠ²Π° Π΅ Π΄ΠΎΡ€ΠΈ ΠΏΠΎ-лошо ΠΎΡ‚ прСдоставянСто Π½Π° бСзпаролния 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, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½Π° Π½Π° Π½ΠΈΠ²ΠΎ хост ядро, Π½ΠΈΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° fuse-overlay, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° OverlayFS ΠΌΠΎΠΆΠ΅ Π΄Π° изпълнява ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½Π΅ само Π°ΠΊΠΎ ѝ сС прСдоставят ΠΏΡ€Π°Π²Π° SYS_ADMIN Ρ‡Ρ€Π΅Π· Linux capabilities. А Π½ΠΈΠ΅ искамС Π΄Π° стартирамС Π½Π°ΡˆΠΈΡ‚Π΅ 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

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

# 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. Ако Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° максимална сигурност, Π·Π° всСки ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΌΠΎΠΆΠ΅ Π΄Π° сС създадС собствСна ΠΏΠ°ΠΏΠΊΠ° Π·Π° containers/image ΠΈ Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅ с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Ρ‡Ρ€Π΅Π· volume-mount. ОсвСн Ρ‚ΠΎΠ²Π°, контСкстната ΠΏΠ°ΠΏΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° сС Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈ Π² самия ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° /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

Бигурност. Buildah, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ Π² Ρ‚Π°ΠΊΡŠΠ² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΈΠΌΠ° максимална сигурност: Π½Π΅ ΠΌΡƒ сС Π΄Π°Π²Π°Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ root-ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Ρ‡Ρ€Π΅Π· capabilities, ΠΈ към Π½Π΅Π³ΠΎ сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ всички ограничСния Π½Π° SECOMP ΠΈ SELinux. Вакъв ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π΄ΠΎΡ€ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС стартира с изолация Π½Π° User Namespace, добавяйки опция ΠΊΠ°Ρ‚ΠΎ β€”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

Бигурност. Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-ΠΌΠ°Π»ΠΊΠΎ бСзопасният Π½Π°Ρ‡ΠΈΠ½ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΡŠΡ‚ Ρ‚ΡƒΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π½Π° хоста ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ Π΄Π° прСдостави Π½Π° 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) ΠΌΠ΅ΠΆΠ΄Ρƒ стартиранията, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ всички послСдващи изграТдания Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎΠ»Π·Π²Π°Ρ‚ прСдимствата Π½Π° ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ.

Бигурност. НСщо срСдно ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈΡ‚Π΅ 1 ΠΈ 2. ΠžΡ‚ Π΅Π΄Π½Π° страна, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ нямат Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° хоста ΠΈ, ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ, Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° прСдоставят Π½Π΅Ρ‰ΠΎ лошо Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π½Π° ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚Π΅ Podman\/CRI-O. ΠžΡ‚ Π΄Ρ€ΡƒΠ³Π° страна, Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° своя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° влияС Π½Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ.

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

Π”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°

Π£ containers\/storage ΠΈΠΌΠ° Π½Π΅Ρ‰ΠΎ страхотно, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ΠΎ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° (additional stores), Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈ стартиранС ΠΈ сборка Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½ΠΈΡ‚Π΅ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ външни Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π½Π° изобраТСния Π² Ρ€Π΅ΠΆΠΈΠΌ read-only ΠΎΠ²Π΅Ρ€Π»Π΅ΠΉ. Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚, Π² Ρ„Π°ΠΉΠ»Π° 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 Π²ΡŠΡ‚Ρ€Π΅ Π² контСйнСрния ΠΎΠ±Ρ€Π°Π·, ΠΊΠ°Ρ‚ΠΎ ΠΊΠ°Π·Π²Π°ΠΌΠ΅ Π½Π° storage-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° β€œadditionalimagestores” Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° /var/lib/shared. А Π² слСдващия Ρ€Π΅Π΄ създавамС ΠΎΠ±Ρ‰Π° ΠΏΠ°ΠΏΠΊΠ° ΠΈ добавямС няколко lock-Ρ„Π°ΠΉΠ»Π°, Π·Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΠΌ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ ΠΎΡ‚ страна Π½Π° containers/storage. Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚, просто създавамС ΠΏΡ€Π°Π·Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½ΠΈ изобраТСния.

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

Π‘Π΅Π³Π° Π΄Π° сС Π²ΡŠΡ€Π½Π΅ΠΌ към разглСдания ΠΏΠΎ-Π³ΠΎΡ€Π΅ Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 2, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Buildah-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ‡Π΅Ρ‚Π΅ ΠΈ пишС Π² containers/store Π½Π° хостовСтС ΠΈ слСдоватСлно ΠΈΠΌΠ° максимална производитСлност Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° изобраТСния Π½Π° Π½ΠΈΠ²ΠΎ 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 Π²ΡŠΡ‚Ρ€Π΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π² Ρ€Π΅ΠΆΠΈΠΌ read-only. Π—Π°Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π²ΡŠΡ‚Ρ€Π΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Buildah ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° всякакви изобраТСния, ΠΊΠΎΠΈΡ‚ΠΎ Π²Π΅Ρ‡Π΅ са Π±ΠΈΠ»ΠΈ ΠΈΠ·Ρ‚Π΅Π³Π»Π΅Π½ΠΈ Ρ‡Ρ€Π΅Π· Podman/CRI-O (ΠΏΡ€ΠΈΠ²Π΅Ρ‚, Π±ΡŠΡ€Π·ΠΈΠ½Π°), Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° записва само Π² собствСното си Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ (ΠΏΡ€ΠΈΠ²Π΅Ρ‚, бСзопасност). Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ°, ΠΎΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° сС ΠΏΡ€Π°Π²ΠΈ Π±Π΅Π· ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° SELinux Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

Π’Π°ΠΆΠ½ΠΎ ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½ΠΈΠ΅

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

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

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

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

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

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

ОсвСн Ρ‚ΠΎΠ²Π°, Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ ΠΏΠΎ Π½ΠΎΠ²Π° функция Π·Π° overlay volume mounts, която Ρ‰Π΅ ускори сглобяванСто Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ ΠΎΡ‰Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅.

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

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

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

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster