ื”ืžืœืฆื•ืช ืœื”ืคืขืœืช Buildah ื‘ืชื•ืš ืžื›ื•ืœื”

ืžื” ื”ื™ื•ืคื™ ื‘ื ื™ืชื•ืง ื–ืžืŸ ื”ืจื™ืฆื” ืฉืœ ื”ืžื›ื•ืœื” ืœืจื›ื™ื‘ื™ ื›ืœื™ ืขื‘ื•ื“ื” ื ืคืจื“ื™ื? ื‘ืคืจื˜, ื ื™ืชืŸ ืœื”ืชื—ื™ืœ ืœืฉืœื‘ ื›ืœื™ื ืืœื• ื›ืš ืฉื”ื ืžื’ื ื™ื ื–ื” ืขืœ ื–ื”.

ื”ืžืœืฆื•ืช ืœื”ืคืขืœืช Buildah ื‘ืชื•ืš ืžื›ื•ืœื”

ืื ืฉื™ื ืจื‘ื™ื ื ืžืฉื›ื™ื ืœืจืขื™ื•ืŸ ืฉืœ ื‘ื ื™ื™ืช ืชืžื•ื ื•ืช OCI ืžื›ื•ืœื•ืช ื‘ืคื ื™ื ืงื•ื‘ืจื ื˜ ืื• ืžืขืจื›ืช ื“ื•ืžื”. ื ื ื™ื— ืฉื™ืฉ ืœื ื• CI/CD ืฉื›ืœ ื”ื–ืžืŸ ืื•ืกืฃ ืชืžื•ื ื•ืช, ื•ืื– ืžืฉื”ื• ื›ืžื• ืจื“ ื”ืื˜/Kubernetes ื™ื”ื™ื” ืฉื™ืžื•ืฉื™ ืœืžื“ื™ ื‘ืžื•ื ื—ื™ื ืฉืœ ืื™ื–ื•ืŸ ืขื•ืžืกื™ื ื‘ืžื”ืœืš ื‘ื ื™ื™ื”. ืขื“ ืœืื—ืจื•ื ื”, ืจื•ื‘ ื”ืื ืฉื™ื ืคืฉื•ื˜ ื ืชื ื• ืœืงื•ื ื˜ื™ื™ื ืจื™ื ื’ื™ืฉื” ืœืฉืงืข Docker ื•ืื™ืคืฉืจื• ืœื”ื ืœื”ืคืขื™ืœ ืืช ืคืงื•ื“ืช ื”-docker build. ืœืคื ื™ ืžืกืคืจ ืฉื ื™ื ื”ืจืื™ื ื•ืฉื–ื” ืžืื•ื“ ืœื ื‘ื˜ื•ื—, ืœืžืขืฉื”, ื–ื” ืืคื™ืœื• ื™ื•ืชืจ ื’ืจื•ืข ืžืืฉืจ ืœืชืช ืฉื•ืจืฉ ืื• ืกื•ื“ื• ืœืœื ืกื™ืกืžื”.

ืœื›ืŸ ืื ืฉื™ื ืžื ืกื™ื ื›ืœ ื”ื–ืžืŸ ืœื”ืคืขื™ืœ ืืช 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, ื”ืžื™ื•ืฉื ื‘ืจืžืช ืœื™ื‘ืช ืœื™ื ื•ืงืก ื”ืžืืจื—, ืื ื• ืžืฉืชืžืฉื™ื ื‘ืชื•ื›ื ื™ืช ื‘ืชื•ืš ื”ืงื•ื ื˜ื™ื™ื ืจ ืฉื›ื‘ืช ืคื™ื•ื–, ืžื›ื™ื•ื•ืŸ ืฉื›ืจื’ืข OverlayFS ื™ื›ื•ืœ ืœืขืœื•ืช ืจืง ืื ืืชื” ื ื•ืชืŸ ืœื• ื”ืจืฉืื•ืช SYS_ADMIN ื‘ืืžืฆืขื•ืช ื™ื›ื•ืœื•ืช Linux. ื•ืื ื—ื ื• ืจื•ืฆื™ื ืœื”ืคืขื™ืœ ืืช ืžื›ื•ืœื•ืช ื”-Buildah ืฉืœื ื• ืœืœื ื›ืœ ื”ืจืฉืื•ืช ืฉื•ืจืฉ. ืฉื›ื‘ืช ื ืชื™ืš ืขื•ื‘ื“ืช ื“ื™ ืžื”ืจ ื•ื‘ืขืœืช ื‘ื™ืฆื•ืขื™ื ื˜ื•ื‘ื™ื ื™ื•ืชืจ ืžืืฉืจ ืžื ื”ืœ ื”ืชืงืŸ ื”ืื—ืกื•ืŸ ืฉืœ 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 ื›ื“ื™ ืœื”ืจื›ื™ื‘ ืืช ื”ืื—ืกื•ืŸ ื”ื–ื” ืขืœ ืžื—ืฉื‘ ืื—ืจ ื•ืœื”ืฉืชืžืฉ ื‘ืชืžื•ื ื•ืช ืžืžื ื• ืžื‘ืœื™ ืœื”ื•ืจื™ื“ ื‘ืืžืฆืขื•ืช 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. ืื ื ื“ืจืฉืช ืื‘ื˜ื—ื” ืžืงืกื™ืžืœื™ืช, ืื– ืขื‘ื•ืจ ื›ืœ ืงื•ื ื˜ื™ื™ื ืจ ืืชื” ื™ื›ื•ืœ ืœื™ืฆื•ืจ ืชื™ืงื™ื” ืžืฉืœืš ืขื‘ื•ืจ ืงื•ื ื˜ื™ื™ื ืจื™ื/ืชืžื•ื ื” ื•ืœื—ื‘ืจ ืื•ืชื” ืœืงื•ื ื˜ื™ื™ื ืจ ื‘ืืžืฆืขื•ืช ื—ื™ื‘ื•ืจ ืœื ืคื—. ื•ื—ื•ืฅ ืžื–ื”, ืžืงื ืืช ืกืคืจื™ื™ืช ื”ื”ืงืฉืจ ื‘ืžื™ื›ืœ ืขืฆืžื•, ื‘ืชื™ืงื™ื™ื” /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 ืฉืคื•ืขืœ ื‘ืงื•ื ื˜ื™ื™ื ืจ ื›ื–ื” ื™ืฉ ืื‘ื˜ื—ื” ืžืงืกื™ืžืœื™ืช: ืœื ื ื™ืชื ื•ืช ืœื• ื”ืจืฉืื•ืช ืฉื•ืจืฉ ื‘ืฉื™ืžื•ืฉ ื‘ื™ื›ื•ืœื•ืช, ื•ื›ืœ ื”ื”ื’ื‘ืœื•ืช ืฉืœ 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 ื‘ืชื•ืš ื”ืงื•ื ื˜ื™ื™ื ืจ ืœื ื™ืฆื˜ืจืš ืœื”ื•ืจื™ื“ ืื•ืชื” ืฉื•ื‘, ื•-builds ืขื•ืงื‘ื™ื ื”ืžื‘ื•ืกืกื™ื ืขืœ ืชืžื•ื ื” ื–ื• ื™ื•ื›ืœื• ื’ื ืœืงื—ืช ืืช ืžื” ืฉื”ื ืฆืจื™ื›ื™ื ืžื”ืžื˜ืžื•ืŸ .

ืืคืฉืจื•ืช 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/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 ื›ื‘ืจ ืœื ืฆืจื™ื›ื™ื ืœื”ื•ืจื™ื“ ืชืžื•ื ื•ืช ื‘ืืžืฆืขื•ืช pull. ืœืคื™ื›ืš, ืื ื• ื–ื•ืจืงื™ื ืืช ืฉืœื‘ ื˜ืจื•ื ื”ืื›ืœื•ืก ื•ืžื•ื›ื ื™ื ืžื™ื“ ืœื’ืœื’ืœ ืืช ื”ืžื›ื•ืœื•ืช.

ื•ื›ืžื•ื‘ืŸ, ื–ื” ื™ื›ื•ืœ ืœืฉืžืฉ ื‘ืชื•ืš ืžืขืจื›ืช Kubernetes ื—ื™ื” ืื• ืชืฉืชื™ืช ืงื•ื ื˜ื™ื™ื ืจื™ื ื›ื“ื™ ืœื”ืคืขื™ืœ ื•ืœื”ืคืขื™ืœ ืงื•ื ื˜ื™ื™ื ืจื™ื ื‘ื›ืœ ืžืงื•ื ืœืœื ื”ื•ืจื“ืช ืžืฉื™ื›ื” ืฉืœ ืชืžื•ื ื•ืช. ื™ืชืจื” ืžื›ืš, ื”ืจื™ืฉื•ื ืฉืœ ื”ืงื•ื ื˜ื™ื™ื ืจ, ื”ืžืงื‘ืœ ื‘ืงืฉืช ื“ื—ื™ืคื” ืœื”ืขืœื•ืช ืืœื™ื• ืชืžื•ื ื” ืžืขื•ื“ื›ื ืช, ื™ื›ื•ืœ ืœืฉืœื•ื— ืชืžื•ื ื” ื–ื• ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ ืœืื—ืกื•ืŸ ืจืฉืช ืžืฉื•ืชืฃ, ืฉื ื”ื™ื ื”ื•ืคื›ืช ื–ืžื™ื ื” ืžื™ื™ื“ื™ืช ืœื›ืœ ื”ืฆืžืชื™ื.

ืชืžื•ื ื•ืช ืžื™ื›ืœ ื™ื›ื•ืœื•ืช ืœืคืขืžื™ื ืœื”ื’ื™ืข ืœื’ื•ื“ืœ ื’'ื™ื’ื”-ื‘ื™ื™ื˜ ืจื‘ื™ื. ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืฉืœ ืื—ืกื•ืŸ ื ื•ืกืฃ ืžืืคืฉืจืช ืœืš ืœื”ื™ืžื ืข ืžืฉื™ื‘ื•ื˜ ืชืžื•ื ื•ืช ื›ืืœื” ืขืœ ืคื ื™ ืฆืžืชื™ื ื•ื”ื•ืคื›ืช ืืช ื”ื”ืฉืงื” ืฉืœ ืžื™ื›ืœื™ื ื›ืžืขื˜ ืžื™ื™ื“ื™ืช.

ื‘ื ื•ืกืฃ, ืื ื• ืขื•ื‘ื“ื™ื ื›ืขืช ืขืœ ืชื›ื•ื ื” ื—ื“ืฉื” ื”ื ืงืจืืช mounts overlay volume, ืืฉืจ ืชื”ืคื•ืš ืืช ื‘ื ื™ื™ืช ื”ืžื™ื›ืœื™ื ืœืžื”ื™ืจื” ืขื•ื“ ื™ื•ืชืจ.

ืžืกืงื ื”

ื”ืคืขืœืช Buildah ื‘ืชื•ืš ืงื•ื ื˜ื™ื™ื ืจ ื‘-Kubernetes/CRI-O, Podman, ืื• ืืคื™ืœื• Docker ื”ื™ื ืจื™ืืœื™ืช, ืคืฉื•ื˜ื” ื•ืžืื•ื‘ื˜ื—ืช ื”ืจื‘ื” ื™ื•ืชืจ ืžืืฉืจ ืฉื™ืžื•ืฉ ื‘-docker.socket. ื”ื’ื“ืœื ื• ืžืื•ื“ ืืช ื”ื’ืžื™ืฉื•ืช ื‘ืขื‘ื•ื“ื” ืขื ืชืžื•ื ื•ืช, ื›ืš ืฉืชื•ื›ืœ ืœื”ืคืขื™ืœ ืื•ืชืŸ ื‘ืžื’ื•ื•ืŸ ื“ืจื›ื™ื ื›ื“ื™ ืœื™ื™ืขืœ ืืช ื”ืื™ื–ื•ืŸ ื‘ื™ืŸ ืื‘ื˜ื—ื” ืœื‘ื™ืฆื•ืขื™ื.

ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืฉืœ ืื—ืกื•ืŸ ื ื•ืกืฃ ืžืืคืฉืจืช ืœืš ืœื”ืื™ืฅ ืื• ืืคื™ืœื• ืœื‘ื˜ืœ ืœื—ืœื•ื˜ื™ืŸ ืืช ื”ื•ืจื“ืช ื”ืชืžื•ื ื•ืช ืœืฆืžืชื™ื.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”