ααΎβα’αααΈβαα βααΆβαααααααΆαβααβααΆαβαααααβαα»αααΊαααβαααβαααβαα βααΆβαααΆαααΆαα»βα§αααααβααΆα αβαααβα‘αα? ααΆαα·αααα§αααααααΆαααααα’αΆα α αΆααααααΎααααα αΌαααααΆααΎααααΈα±αααα½αααααΆαααΆαααααΆαα αα·ααα ααα
ααα»αααααΆα
αααΎαα
αΆααα’αΆααααααααΉααααα·αααααΆααααααΎαααΌαααΆα 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 αα·α SECOMP αααααα»αααΊααα ααααααα»ααα ααΉαα αααΌαα α·αααααααααΎααααα»αααΆαααΆααααααΈαα»αααΊααααααααΆααα»ααααα·ααΆαα
αααα»αααα Buildah αα αααα»ααα»ααα½αα
ααααΆααααΆαααΌαααΆααα»αααΊααα Buildah αααααΆααα·ααΆααααΆααΆαααΎα’αα»ααααΆαα±ααα’αααααααΆααααααΌααα·ααΈααΆαααααααααΆαααΎαααααΎαααΆααα»ααααααααααααααααα
ααααΏααααααΉααα»ααααα·ααΆα
αα»ααααα·ααΆααα»αααααΌαααααΊαααααααΆαααΆααααααααααα½ααααΆαααααΏαααααααΎαααΆα αα·αα ααα½αααΆαααΆαααΆααααααααΌαααΆααα»αααααααα»ααα·αααΆα ααα ααααΈαααααααΆααααααααααΆααΆααα·αααααααα αααααα‘αΎααα»αααΊααα ααΌα ααααααΆαααααααααααΎαααΉααα·α αΆαααΆαααααΎααααααΆααααΆααααααααααα½αααααααα
ααΌαααΆααα»αααΊααααααααΆααα·ααΆααααΆααΆαααΎααΉααααααΆααΆααααα»αααααααΆαα αααα»α /var/lib/containers α ααΌα ααααα αΎα ααΎαααααΌαααααΆααααΆαα·ααΆαα αααα»αααααα α αΎααααααααααΎαααααΎααΆααΉαααα₯αααα·αααααΆαααααΆαααααααααΏαααααΆααααααΎαααΌαααΆααα»αααΊαααα
α αΌαααΎααα·α αΆαααΆαααααΎαααΈα
αααΆαααααα 1 α ααααα·αααΎαα»ααααα·ααΆαα’αα·ααααΆααααΌαααΆαααΆαααΆα ααααααααΆαααα»αααΊαααααΈαα½αα α’αααα’αΆα αααααΎαααααααΆαααααα½αααααα’ααααααααΆαααα»αααΊααα/ααΌαααΆα α αΎαααααΆααααΆαα αα»αααΊαααααΆαααα 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 ααΆαα½ααααααααΎαααααααΆααα α αΎαααΆαααΉααααααΉα SECOMP αα·α SELinux ααΆααα’ααααααΌαααΆαα’αα»ααααα ααααααΆα αα»αααααααα’αΆα ααααΎαααΆαααΆαααΆαα½αααΉαααΆαααααααααα’αααααααΎααααΆααααααααααααααααΎαααΌα ααΆ βuidmap 0α 100000:10000α
ααΆαααααααα ααα»ααααααΆαα’αα»αααααα ααΈαααααΊαα·α αα½α αααα»α αααααΆαααΌαααΆαααΆαα½αααΈααΆαα α»ααααααΈαα»αααΊαααααααΌαααΆαα αααααα αααΆαααΈαααΆααααα α αΎαααΆααααααΆαα»ααααα»αααααΆαααααααΆαααα·αααααΎαααΆαααΆαααααααα αα ααααααα ααααΆαααΆαααααααΆαα»αααΊααα Buildah ααααΌαααααααΎααΌαααΆααα αααααΈαααααα αΎαααααααΆαααΆαα·ααΆαα ααΎαααΆαααΈαα αα ααααααααΌαααΆααα»αααΊαααααααΌαααΆααααααΎαα‘αΎαααΎαααααα ααΆααΉαααααΌαααΆαααααΈαααααΈαααααααααααα ααααααα ααααααααΆααΉααα·αααΆαα’αααΈαα ααααα ααΎαααΆαααΈαααα
αααΆαααααα 2 α ααααα·αααΎα’αααααααΌαααΆαααΆαα’αα»ααααααααα·α Docker α’αααα’αΆα ααααΆαα host container/storage αααααααΆαααα αααα»ααα»αααΊαααα
# 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/shared folderα α αΎααα αα½ααααααΆαα ααΎααααααΎααααααααΆαα ααααααα α αΎαααααααα―αααΆαα αΆααααααΈαααΈ ααΎααααΈαα»αα±ααααΆαααΆααααααααααΆαααΈαα»αααΊααα/αααααααααα»αα ααααΆααααΎαααααΆαααααααααΎαααααΆαααααα»αααΌαααΆααααα
ααααα·αααΎα’αααααα‘αΎααα»αααΊααα/αααααααααα»ααα ααααα·ααααααααΆαααααα 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 αα·αα αΆαααΆα αααΆαααααΌαααΆαααΆααααααΆαααΆααααααα ααΌα αααα ααΎαβαααα ααβααααΆααααΆαβαα»αβαααααΆαα α αΎαβαααααβααΆααααα βααααΆααβααΎααααΈβααααβα ααβαα»αα
α αΎαααΆααΆααα·αααΆαα ααΆα’αΆα ααααΌαααΆαααααΎαα αααα»ααααααααα Kubernetes ααααΆαα α¬α αααααΆαα ααΆαααααααααα»αααΊααα ααΎααααΈααΎαααααΎαααΆα αα·αααααΎαααΆααα»αααΊααααααααααΈααααααααααα·αα αΆαααΆα αααΆαααααΌαααΆαααΆαα½αα‘αΎαα ααΆαααααα ααα ααΆαα α»ααααααΈαα»αααΊααα αααααα½αααΆαααααΎαααα»αα±αααααα ααααΌαααΆααααααΆαα’αΆααααααα ααΆ α’αΆα ααααΎααΌαααΆαααααααααααααααααααα·αα ααΆαααααααααααα»ααααααΆαα ααααααα αααααΆα’αΆα ααααΎααΆαααααΆααα ααααααααΆααααΆααα’ααα
αααααααααΌαααΆααα»αααΊαααα’αΆα ααΆααααααα αααΆα αααΎαααΈα αααΆααα αα»αααΆαααααΆααααα»αααααααα’αα»ααααΆαα±ααα’ααααααααΆαααΆαααααΌαααΌαααΆαααααααααααααΆααααααΆαα αα·αααααΎα±ααααΆαααΎαααααΎαααΆααα»αααΊαααααααΎαααααααΆααα
ααΎαααΈααα ααΎααααα»αααααΎααΆαααΎαα»αααΆαααααΈαα½αα α ααΆ overlay volume mounts αααααΉαααααΎα±ααααΆααααΆααα»αααΆααααααΏαααΆααα»αα
ααα ααααΈααααα·ααααΆα
ααΆαααααΎαααΆα Buildah αα αααα»ααα»αααΊααααα αααα»α Kubernetes/CRI-O, Podman, α¬ααΌααααΈαα Docker ααΊα’αΆα ααααΎαα ααΆα ααΆαααα αα·αααΆααα»ααααα·ααΆαααΆαααΆαααααΎ docker.socket α ααΎαααΆααααααΎαααΆααααααααααΆαααααΆαααααα»αααΆαααααΎααΆαααΆαα½αααΌαααΆα ααΌα ααααα’αααα’αΆα ααααΎαααΆααα½αααΆααΆααα·ααΈααΆα αααΎαααΎααααΈαααααΎααα»αααααΆααααΆααα»ααααα·ααΆα αα·αααΆαα’αα»ααααα
αα»αααΆαααααΆααααα»αααααααα’αα»ααααΆαα±ααα’ααααααααΎαααααΏαα¬ααΌααααΈαααα»αααααΆααααΆαααααα»αααΌαααΆαααΆαααααΌαααΆααα
ααααΆααα
ααααα: www.habr.com