ΠΠΎΡΠ° Π΅ ΡΠ±Π°Π²ΠΈΠ½Π°ΡΠ° Π½Π° ΡΠ°Π·Π΄Π²ΠΎΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ Π²ΠΎ ΠΏΠΎΡΠ΅Π±Π½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π·Π° Π°Π»Π°ΡΠΈ? ΠΡΠΎΠ±Π΅Π½ΠΎ, ΠΎΠ²ΠΈΠ΅ Π°Π»Π°ΡΠΊΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΡΠ½Π°Ρ Π΄Π° ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π°Ρ Π·Π° Π΄Π° ΡΠ΅ Π·Π°ΡΡΠΈΡΠ°Ρ Π΅Π΄Π½ΠΈ ΡΠΎ Π΄ΡΡΠ³ΠΈ.
ΠΠ½ΠΎΠ³Ρ Π»ΡΡΠ΅ ΡΠ΅ ΠΏΡΠΈΠ²Π»Π΅ΡΠ΅Π½ΠΈ ΠΎΠ΄ ΠΈΠ΄Π΅ΡΠ°ΡΠ° Π·Π° Π³ΡΠ°Π΄Π΅ΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ OCI ΡΠ»ΠΈΠΊΠΈ Π²Π½Π°ΡΡΠ΅
ΠΠ°ΡΠΎΠ° Π»ΡΡΠ΅ΡΠΎ ΠΏΠΎΡΡΠΎΡΠ°Π½ΠΎ ΡΠ΅ ΠΎΠ±ΠΈΠ΄ΡΠ²Π°Π°Ρ Π΄Π° ΡΠ° Π²ΠΎΠ΄Π°Ρ ΠΠΈΠ»Π΄Π°Ρ
Π²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ. ΠΠ°ΠΊΡΠ°ΡΠΊΠΎ, ΡΠΎΠ·Π΄Π°Π΄ΠΎΠ²ΠΌΠ΅
ΠΏΡΠΈΠ»Π°Π³ΠΎΠ΄ΡΠ²Π°ΡΠ΅
ΠΠ²ΠΈΠ΅ ΡΠ»ΠΈΠΊΠΈ ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ΠΈ ΠΎΠ΄ Dockerfiles, ΠΊΠΎΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΡΠ΄Π°Ρ Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ Buildah Π²ΠΎ ΠΏΠ°ΠΏΠΊΠ°ΡΠ°
ΠΠ²Π΄Π΅ ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅
# 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, ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° Π²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ
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
Π‘Π»Π΅Π΄Π½ΠΎ, ΡΠΎΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ Π·Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅.
# 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 ΡΠ΅ ΡΠ° ΠΏΡΠ΅Π·Π΅ΠΌΠ΅ ΡΠ»ΠΈΠΊΠ°ΡΠ°, ΡΠ»ΠΈΠΊΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΠΎ ΡΠΈΡΠ΅ Π½Π°ΡΠ΅Π΄Π½ΠΈ ΠΈΠ·Π΄Π°Π½ΠΈΡΠ° Π²ΠΎ ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅
Π£
ΠΠΊΠΎ Π΄ΠΎΡΠ΄Π΅ΡΠ΅ Π½Π°Π³ΠΎΡΠ΅ ΠΈ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ Π²ΠΎ 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