ΠΠ°ΠΊΠ²Π° Π΅ ΠΊΡΠ°ΡΠΎΡΠ°ΡΠ° Π½Π° ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ΡΠΎ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°? ΠΠΎ-ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΡΠ°ΠΊΡΡΡ, ΡΠ΅ ΡΠ΅Π·ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π°Ρ Π΄Π° ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Ρ, ΡΠ°ΠΊΠ° ΡΠ΅ Π΄Π° ΡΠ΅ Π·Π°ΡΠΈΡΠ°Π²Π°Ρ Π²Π·Π°ΠΈΠΌΠ½ΠΎ.
ΠΠ½ΠΎΠ³ΠΎ Ρ
ΠΎΡΠ° ΡΠ° ΠΏΡΠΈΠ²Π»Π΅ΡΠ΅Π½ΠΈ ΠΎΡ ΠΈΠ΄Π΅ΡΡΠ° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° 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, Π²Π½Π΅Π΄ΡΠ΅Π½ Π½Π° Π½ΠΈΠ²ΠΎ 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
Security. Buildah, ΡΠ°Π±ΠΎΡΠ΅Ρ Π² ΡΠ°ΠΊΡΠ² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, ΠΈΠΌΠ° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ: Π½Π΅ ΠΌΡ ΡΠ΅ Π΄Π°Π²Π°Ρ Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ root ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ ΠΎΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΈ Π²ΡΠΈΡΠΊΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° SECOMP ΠΈ SELinux ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΠΊΡΠΌ Π½Π΅Π³ΠΎ.Π’Π°ΠΊΡΠ² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΌΠΎΠΆΠ΅ Π΄ΠΎΡΠΈ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Ρ ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΡΡΠ΅Π· Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΠΎΠΏΡΠΈΡ ΠΊΠ°ΡΠΎ --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
Security. Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-ΠΌΠ°Π»ΠΊΠΎ ΡΠΈΠ³ΡΡΠ½ΠΈΡΡ Π½Π°ΡΠΈΠ½ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° Ρ ΠΎΡΡΠ° ΠΈ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΠΌΡΠΊΠ½Π΅ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² 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) ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΡΡΠ°, ΡΠ°ΠΊΠ° ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΡΠ»Π΅Π΄Π²Π°ΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΠΈ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ΅ Π²ΡΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΎΡ ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ.
Security. ΠΠ΅ΡΠΎ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠΏΡΠΈΠΈ 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 Π²Π΅ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠΎ Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅Π· ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅. ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ Π½ΠΈΠ΅ ΠΈΠ·Ρ Π²ΡΡΠ»ΡΠΌΠ΅ ΡΠ°Π·Π°ΡΠ° ΠΏΡΠ΅Π΄ΠΈ ΠΏΠΎΠΏΡΠ»Π°ΡΠΈΡΡΠ° ΠΈ Π²Π΅Π΄Π½Π°Π³Π° ΡΠΌΠ΅ Π³ΠΎΡΠΎΠ²ΠΈ Π΄Π° ΡΠ°Π·Π³ΡΡΠ½Π΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅.
Π ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π°ΠΊΡΠΈΠ²Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π° Kubernetes ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π½Π°Π²ΡΡΠΊΡΠ΄Π΅ Π±Π΅Π· ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅Π³ΠΈΡΡΡΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ ΠΏΠΎΠ»ΡΡΠΈ Π½Π°ΡΠΎΡΠ΅Π½Π° Π·Π°ΡΠ²ΠΊΠ° Π·Π° ΠΊΠ°ΡΠ²Π°Π½Π΅ Π½Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π½Π΅Π³ΠΎ, ΡΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠΈ ΡΠΎΠ²Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΎ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, ΠΊΡΠ΄Π΅ΡΠΎ Π΅ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π·Π° Π²ΡΠΈΡΠΊΠΈ Π²ΡΠ·Π»ΠΈ.
ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΈΠ³Π°Π±Π°ΠΉΡΠ°. Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈΡΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ ΠΊΠ»ΠΎΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°ΠΊΠΈΠ²Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΡ Π²ΡΠ·Π»ΠΈ ΠΈ ΠΏΡΠ°Π²ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ ΠΏΠΎΡΡΠΈ ΠΌΠΈΠ³Π½ΠΎΠ²Π΅Π½ΠΎ.
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠ°Π±ΠΎΡΠΈΠΌ Π²ΡΡΡ Ρ Π½ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΡ Π·Π° ΠΌΠΎΠ½ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΌΠ½ΠΈ Π½Π°ΡΠ»Π°Π³Π²Π°Π½ΠΈΡ, ΠΊΠΎΡΡΠΎ ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ ΠΎΡΠ΅ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Buildah Π²ΡΡΡΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π² Kubernetes/CRI-O ΡΡΠ΅Π΄Π°, Podman ΠΈΠ»ΠΈ Π΄ΠΎΡΠΈ Docker Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π΅ ΠΏΡΠΎΡΡΠΎ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΠΎΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° docker.socket. Π£Π²Π΅Π»ΠΈΡΠΈΡ ΠΌΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π³ΡΠ²ΠΊΠ°Π²ΠΎΡΡΡΠ° ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠ΅Π³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠ΅ ΠΏΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½Π°ΡΠΈΠ½ΠΈ Π·Π° Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΡ Π±Π°Π»Π°Π½Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ.
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈΡΠ΅ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΡΠΊΠΎΡΠΈΡΠ΅ ΠΈΠ»ΠΈ Π΄ΠΎΡΠΈ Π½Π°ΠΏΡΠ»Π½ΠΎ Π΄Π° ΠΏΡΠ΅ΠΌΠ°Ρ
Π½Π΅ΡΠ΅ ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ΡΠΎ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊΡΠΌ Π²ΡΠ·Π»ΠΈΡΠ΅.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com