ืื ืืืืคื ืื ืืชืืง ืืื ืืจืืฆื ืฉื ืืืืืื ืืจืืืื ืืื ืขืืืื ื ืคืจืืื? ืืคืจื, ื ืืชื ืืืชืืื ืืฉืื ืืืื ืืื ืื ืฉืื ืืื ืื ืื ืขื ืื.
ืื ืฉืื ืจืืื ื ืืฉืืื ืืจืขืืื ืฉื ืื ืืืช ืชืืื ืืช OCI ืืืืืืช ืืคื ืื
ืืื ืื ืฉืื ืื ืกืื ืื ืืืื ืืืคืขืื ืืช Buildah ืืงืื ืืืื ืจ. ืืงืืฆืืจ, ืืฆืจื ื
ืืชืืื
ืชืืื ืืช ืืื ืื ืืืืช ื-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, ืืืืืฉื ืืจืืช ืืืืช ืืื ืืงืก ืืืืจื, ืื ื ืืฉืชืืฉืื ืืชืืื ืืช ืืชืื ืืงืื ืืืื ืจ
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 ืฉืคืืขื ืืงืื ืืืื ืจ ืืื ืืฉ ืืืืื ืืงืกืืืืืช: ืื ื ืืชื ืืช ืื ืืจืฉืืืช ืฉืืจืฉ ืืฉืืืืฉ ืืืืืืืช, ืืื ืืืืืืืช ืฉื 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 ืืืจืื ืืช ืืชืืื ื, ื ืืชื ืืืฉืชืืฉ ืืชืืื ื ืืื ืื ืืื ืฉืืืืจ ืืื ืืชืื ืืคืจืืืงื.
ืืืกืื ื ืืกืฃ
ะฃ
ืื ืชืืืื ืืืขืื ืืชืกืชืืื ืขื ื-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