ΠŸΡ€Π΅ΠΏΠΎΡ€Π°ΠΊΠΈ Π·Π° водСњС Π½Π° Buildah Π²ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€

Која Π΅ ΡƒΠ±Π°Π²ΠΈΠ½Π°Ρ‚Π° Π½Π° Ρ€Π°Π·Π΄Π²ΠΎΡ˜ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚ Π²ΠΎ посСбни ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π·Π° Π°Π»Π°Ρ‚ΠΈ? ОсобСно, ΠΎΠ²ΠΈΠ΅ Π°Π»Π°Ρ‚ΠΊΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΡ‡Π½Π°Ρ‚ Π΄Π° сС ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π°Ρ‚ Π·Π° Π΄Π° сС Π·Π°ΡˆΡ‚ΠΈΡ‚Π°Ρ‚ Π΅Π΄Π½ΠΈ со Π΄Ρ€ΡƒΠ³ΠΈ.

ΠŸΡ€Π΅ΠΏΠΎΡ€Π°ΠΊΠΈ Π·Π° водСњС Π½Π° Buildah Π²ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€

ΠœΠ½ΠΎΠ³Ρƒ Π»ΡƒΡ“Π΅ сС ΠΏΡ€ΠΈΠ²Π»Π΅Ρ‡Π΅Π½ΠΈ ΠΎΠ΄ ΠΈΠ΄Π΅Ρ˜Π°Ρ‚Π° Π·Π° Π³Ρ€Π°Π΄Π΅ΡšΠ΅ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ OCI слики Π²Π½Π°Ρ‚Ρ€Π΅ ΠšΡƒΠ±Π΅Ρ€Π½Π΅Ρ‚ΠΈ ΠΈΠ»ΠΈ сличСн систСм. Π”Π° Ρ€Π΅Ρ‡Π΅ΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΈΠΌΠ°ΠΌΠ΅ CI/CD ΡˆΡ‚ΠΎ ΠΏΠΎΡΡ‚ΠΎΡ˜Π°Π½ΠΎ собира слики, Π° ΠΏΠΎΡ‚ΠΎΠ° Π½Π΅ΡˆΡ‚ΠΎ слично Red Hat OpenShift/Kubernetes Π±ΠΈ Π±ΠΈΠ» доста корисСн Π²ΠΎ однос Π½Π° Π±Π°Π»Π°Π½ΡΠΈΡ€Π°ΡšΠ΅ Π½Π° Ρ‚ΠΎΠ²Π°Ρ€ΠΎΡ‚ Π·Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π³Ρ€Π°Π΄Π±ΠΈΡ‚Π΅. Π”ΠΎ Π½Π΅ΠΎΠ΄Π°ΠΌΠ½Π°, ΠΏΠΎΠ²Π΅ΡœΠ΅Ρ‚ΠΎ Π»ΡƒΡ“Π΅ Сдноставно ΠΈΠΌ Π΄Π°Π²Π°Π° Π½Π° ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈΡ‚Π΅ пристап Π΄ΠΎ ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊΠΎΡ‚ Π·Π° Docker ΠΈ ΠΈΠΌ Π΄ΠΎΠ·Π²ΠΎΠ»ΡƒΠ²Π°Π° Π΄Π° ја ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°Π°Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π·Π° ΠΈΠ·Π³Ρ€Π°Π΄Π±Π° Π½Π° docker. ΠŸΡ€Π΅Π΄ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ°Π²ΠΌΠ΅Π΄Π΅ΠΊΠ° ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³Ρƒ нСсигурно, Π²ΡΡƒΡˆΠ½ΠΎΡΡ‚, Ρ‚ΠΎΠ° Π΅ ΡƒΡˆΡ‚Π΅ полошо ΠΎΠ΄ давањС root ΠΈΠ»ΠΈ sudo Π±Π΅Π· Π»ΠΎΠ·ΠΈΠ½ΠΊΠ°.

Π—Π°Ρ‚ΠΎΠ° Π»ΡƒΡ“Π΅Ρ‚ΠΎ ΠΏΠΎΡΡ‚ΠΎΡ˜Π°Π½ΠΎ сС ΠΎΠ±ΠΈΠ΄ΡƒΠ²Π°Π°Ρ‚ Π΄Π° ја Π²ΠΎΠ΄Π°Ρ‚ Π‘ΠΈΠ»Π΄Π°Ρ… Π²ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€. Накратко, создадовмС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠ°ΠΊΠΎ, спорСд нашС мислСњС, Π΅ Π½Π°Ρ˜Π΄ΠΎΠ±Ρ€ΠΎ Π΄Π° сС ΠΏΡƒΡˆΡ‚ΠΈ Buildah Π²ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ ΠΈ Π΄Π° сС објавСни соодвСтнитС слики Π½Π° quay.io/buildah. АјдС Π΄Π° ΠΏΠΎΡ‡Π½Π΅ΠΌΠ΅...

ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΠ΄ΡƒΠ²Π°ΡšΠ΅

ОвиС слики сС ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½ΠΈ ΠΎΠ΄ Dockerfiles, ΠΊΠΎΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°Ρ˜Π΄Π°Ρ‚ Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ Buildah Π²ΠΎ ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° Π³Ρ€Π°Π΄Π΅ΡšΠ΅.
ОвдС ќС Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ стабилна Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π½Π° 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. ΠŸΡ€Π΅ΠΊΠ»ΠΎΠΏΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ со осигурувачи Ρ€Π°Π±ΠΎΡ‚ΠΈ доста Π±Ρ€Π·ΠΎ ΠΈ ΠΈΠΌΠ° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ пСрформанси ΠΎΠ΄ Π΄Ρ€Π°Ρ˜Π²Π΅Ρ€ΠΎΡ‚ Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ 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

БСзбСдност. Buildah ΡˆΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π²ΠΎ Ρ‚Π°ΠΊΠΎΠ² ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ ΠΈΠΌΠ° максимална бСзбСдност: Π½Π΅ ΠΌΡƒ сС Π΄Π°Π΄Π΅Π½ΠΈ Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π·Π° root со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° способности ΠΈ ситС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΡƒΠ²Π°ΡšΠ° Π½Π° 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 ќС ја ΠΏΡ€Π΅Π·Π΅ΠΌΠ΅ сликата, сликата ΠΌΠΎΠΆΠ΅ Π΄Π° сС користи Π²ΠΎ ситС Π½Π°Ρ€Π΅Π΄Π½ΠΈ изданија Π²ΠΎ Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅

Π£ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ/ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ Има Ρ‚ΠΎΠ»ΠΊΡƒ ΠΊΡƒΠ» Ρ€Π°Π±ΠΎΡ‚Π° ΠΊΠ°ΠΊΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΏΡ€ΠΎΠ΄Π°Π²Π½ΠΈΡ†ΠΈ (Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΏΡ€ΠΎΠ΄Π°Π²Π½ΠΈΡ†ΠΈ), Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° ΡˆΡ‚ΠΎ ΠΏΡ€ΠΈ Π»Π°Π½ΡΠΈΡ€Π°ΡšΠ΅ ΠΈ Π³Ρ€Π°Π΄Π΅ΡšΠ΅ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ, ΠΌΠΎΡ‚ΠΎΡ€ΠΈΡ‚Π΅ Π·Π° ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° користат Π½Π°Π΄Π²ΠΎΡ€Π΅ΡˆΠ½ΠΈ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π° Π·Π° слики Π²ΠΎ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΠΏΡ€Π΅ΠΊΠ»ΠΎΠΏΡƒΠ²Π°ΡšΠ΅ само Π·Π° Ρ‡ΠΈΡ‚Π°ΡšΠ΅. Π’ΠΎ ΡΡƒΡˆΡ‚ΠΈΠ½Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ Π΅Π΄Π΅Π½ ΠΈΠ»ΠΈ повСќС ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π° само Π·Π° Ρ‡ΠΈΡ‚Π°ΡšΠ΅ Π²ΠΎ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° 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/сподСлСната ΠΏΠ°ΠΏΠΊΠ°. И Π²ΠΎ слСдната линија создавамС сподСлСна ΠΏΠ°ΠΏΠΊΠ° ΠΈ Π΄ΠΎΠ΄Π°Π²Π°ΠΌΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ Π·Π° Π·Π°ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°ΡšΠ΅ Π·Π° Π΄Π° Π½Π΅ΠΌΠ° Π·Π»ΠΎΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° ΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ/ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅. Π’ΠΎ ΡΡƒΡˆΡ‚ΠΈΠ½Π°, Π½ΠΈΠ΅ Сдноставно создавамС ΠΏΡ€Π°Π·Π½Π° ΠΏΡ€ΠΎΠ΄Π°Π²Π½ΠΈΡ†Π° Π·Π° слики ΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€.

Ако ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Ρ‚Π΅ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ/ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ Π½Π° Π½ΠΈΠ²ΠΎ повисоко ΠΎΠ΄ ΠΎΠ²Π°Π° ΠΏΠ°ΠΏΠΊΠ°, 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 вСќС Π½Π΅ ΠΌΠΎΡ€Π° Π΄Π° ΠΏΡ€Π΅Π·Π΅ΠΌΠ°Π°Ρ‚ слики ΠΏΡ€Π΅ΠΊΡƒ pull. Π’Π°ΠΊΠ°, ја исфрламС Ρ„Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΠΏΡƒΠ»Π°Ρ†ΠΈΡ˜Π° ΠΈ вСднаш смС ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈ Π΄Π° Π³ΠΈ Ρ‚Ρ€ΠΊΠ°Π»Π°ΠΌΠ΅ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈΡ‚Π΅.

И, сС Ρ€Π°Π·Π±ΠΈΡ€Π°, ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС користи Π²ΠΎ ΠΆΠΈΠ²ΠΈΠΎΡ‚ систСм Π½Π° Kubernetes ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΡΠΊΠ° инфраструктура Π·Π° Π»Π°Π½ΡΠΈΡ€Π°ΡšΠ΅ ΠΈ ΠΏΡƒΡˆΡ‚Π°ΡšΠ΅ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ насСкадС Π±Π΅Π· Π½ΠΈΠΊΠ°ΠΊΠ²ΠΎ Π²Π»Π΅Ρ‡Π½ΠΎ ΠΏΡ€Π΅Π·Π΅ΠΌΠ°ΡšΠ΅ слики. ΠŸΠΎΠΊΡ€Π°Ρ˜ Ρ‚ΠΎΠ°, рСгистарот Π½Π° ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ, добивајќи Π±Π°Ρ€Π°ΡšΠ΅ Π·Π° ΠΏΡ€ΠΈΡ‚ΠΈΡΠΊΠ°ΡšΠ΅ Π΄Π° постави Π°ΠΆΡƒΡ€ΠΈΡ€Π°Π½Π° слика Π½Π° Π½Π΅Π³ΠΎ, ΠΌΠΎΠΆΠ΅ автоматски Π΄Π° ја испрати ΠΎΠ²Π°Π° слика Π΄ΠΎ Π·Π°Π΅Π΄Π½ΠΈΡ‡ΠΊΠΎ ΠΌΡ€Π΅ΠΆΠ½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅, ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ вСднаш станува достапна Π·Π° ситС јазли.

Π‘Π»ΠΈΠΊΠΈΡ‚Π΅ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈΡ‚Π΅ понСкогаш ΠΌΠΎΠΆΠ΅ Π΄Π° достигнат ΠΌΠ½ΠΎΠ³Ρƒ Π³ΠΈΠ³Π°Π±Π°Ρ˜Ρ‚ΠΈ Π²ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°. Ѐункционалноста Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎΡ‚ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅Ρ‚Π΅ ΠΊΠ»ΠΎΠ½ΠΈΡ€Π°ΡšΠ΅ Π½Π° Ρ‚Π°ΠΊΠ²ΠΈ слики Π½ΠΈΠ· Ρ˜Π°Π·Π»ΠΈΡ‚Π΅ ΠΈ Π³ΠΎ ΠΏΡ€Π°Π²ΠΈ Π»Π°Π½ΡΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈΡ‚Π΅ рСчиси ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΎ.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ, ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌΠ΅ Π½Π° Π½ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°ΡšΠ° Π·Π° Ρ˜Π°Ρ‡ΠΈΠ½Π° Π½Π° ΠΏΡ€Π΅ΠΊΠ»ΠΎΠΏ, која ќС Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈ ΠΈΠ·Π³Ρ€Π°Π΄Π±Π°Ρ‚Π° Π½Π° ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ ΡƒΡˆΡ‚Π΅ ΠΏΠΎΠ±Ρ€Π·ΠΎ.

Π—Π°ΠΊΠ»ΡƒΡ‡ΠΎΠΊ

Π Π°Π±ΠΎΡ‚Π΅ΡšΠ΅Ρ‚ΠΎ Π½Π° Buildah Π²ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ Π²ΠΎ Kubernetes/CRI-O, Podman ΠΈΠ»ΠΈ Π΄ΡƒΡ€ΠΈ ΠΈ Docker Π΅ ΠΈΠ·Π²ΠΎΠ΄Π»ΠΈΠ²ΠΎ, Сдноставно ΠΈ ΠΌΠ½ΠΎΠ³Ρƒ посигурно ΠΎΠ΄ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅Ρ‚ΠΎ Π½Π° docker.socket. Π’ΠΎ Π³ΠΎΠ»Π΅ΠΌΠ° ΠΌΠ΅Ρ€Π° ја Π·Π³ΠΎΠ»Π΅ΠΌΠΈΠ²ΠΌΠ΅ флСксибилноста Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° со слики, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΈ ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°Ρ‚Π΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π½Π°Ρ‡ΠΈΠ½ΠΈ Π·Π° Π΄Π° Π³ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ балансот ΠΏΠΎΠΌΠ΅Ρ“Ρƒ бСзбСдноста ΠΈ пСрформанситС.

Ѐункционалноста Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎΡ‚ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° Π³ΠΎ Π·Π°Π±Ρ€Π·Π°Ρ‚Π΅, ΠΏΠ° Π΄ΡƒΡ€ΠΈ ΠΈ цСлосно Π΄Π° Π³ΠΎ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ ΠΏΡ€Π΅Π·Π΅ΠΌΠ°ΡšΠ΅Ρ‚ΠΎ Π½Π° слики Π²ΠΎ јазли.

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€