рдХрдВрдЯреЗрдирд░ рд░рдирдЯрд╛рдЗрдорд▓рд╛ рд╕реНрд╡рддрдВрддреНрд░ рдЯреВрд▓реАрдВрдЧ рдШрдЯрдХрд╛рдВрдордзреНрдпреЗ рдбреАрдХрдкрд▓рд┐рдВрдЧ рдХрд░рдгреНрдпрд╛рдЪреЗ рд╕реМрдВрджрд░реНрдп рдХрд╛рдп рдЖрд╣реЗ? рд╡рд┐рд╢реЗрд╖рддрдГ, рд╣реА рд╕рд╛рдзрдиреЗ рдПрдХрддреНрд░ рдХрд░рдгреЗ рд╕реБрд░реВ рд╣реЛрдК рд╢рдХрддреЗ рдЬреЗрдгреЗрдХрд░реВрди рддреЗ рдПрдХрдореЗрдХрд╛рдВрдЪреЗ рд╕рдВрд░рдХреНрд╖рдг рдХрд░рддреАрд▓.
рдЕрдиреЗрдХ рд▓реЛрдХ рдХрдВрдЯреЗрдирд░реАрдХреГрдд OCI рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдХрд▓реНрдкрдиреЗрдХрдбреЗ рдЖрдХрд░реНрд╖рд┐рдд рд╣реЛрддрд╛рдд
рдореНрд╣рдгреВрдирдЪ рд▓реЛрдХ рд╕рддрдд рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдмрд┐рд▓реНрдбрд╛ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддрд╛рдд. рдереЛрдбрдХреНрдпрд╛рдд, рдЖрдореНрд╣реА рддрдпрд╛рд░ рдХреЗрд▓реЗ
рд╕рдорд╛рдпреЛрдЬрди
рдпрд╛ рдкреНрд░рддрд┐рдорд╛ рдбреЙрдХрд░рдлрд╛рдИрд▓реНрд╕рдордзреВрди рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд, рдЬреНрдпрд╛ рдлреЛрд▓реНрдбрд░рдордзреАрд▓ рдмрд┐рд▓реНрдбрд╛ рд░рд┐рдкреЙрдЭрд┐рдЯрд░реАрдордзреНрдпреЗ рдЖрдврд│реВ рд╢рдХрддрд╛рдд
рдпреЗрдереЗ рдЖрдкрдг рд╡рд┐рдЪрд╛рд░ рдХрд░реВ
# 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 рдХрдВрдЯреЗрдирд░ рдЗрдореЗрдЬ рдбрд╛рдпрдЧреНрд░рд╛рдо рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрд╢рд╛ рдХрдВрдЯреЗрдирд░ рд▓рд╛рдБрдЪ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдкрджреНрдзрддреА рд▓рд╡рдЪрд┐рдХрдкрдгреЗ рдмрджрд▓реВ рджреЗрддреЗ.
рд╡реЗрдЧ рд╡рд┐рд░реБрджреНрдз рд╕реБрд░рдХреНрд╖рд┐рддрддрд╛
рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪрд╛ рд╡реЗрдЧ рдЖрдгрд┐ рддреНрдпрд╛рднреЛрд╡рддреА рдХрд┐рддреА рд╕рдВрд░рдХреНрд╖рдг рдЧреБрдВрдбрд╛рд│рд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ рдпрд╛рдордзреАрд▓ рддрдбрдЬреЛрдб рд╕рдВрдЧрдгрдХ рд╕реБрд░рдХреНрд╖рд╛ рдиреЗрд╣рдореАрдЪ рдЕрд╕рддреЗ. рд╣реЗ рд╡рд┐рдзрд╛рди рдХрдВрдЯреЗрдирд░ рдПрдХрддреНрд░ рдХрд░рддрд╛рдирд╛ рджреЗрдЦреАрд▓ рд╕рддреНрдп рдЖрд╣реЗ, рдореНрд╣рдгреВрди рдЦрд╛рд▓реА рдЖрдореНрд╣реА рдЕрд╢рд╛ рддрдбрдЬреЛрдбреАрд╕рд╛рдареА рдкрд░реНрдпрд╛рдпрд╛рдВрдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░реВ.
рд╡рд░ рдЪрд░реНрдЪрд╛ рдХреЗрд▓реЗрд▓реА рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛ рддреНрдпрд╛рдЪреЗ рд╕реНрдЯреЛрд░реЗрдЬ /var/lib/containers рдордзреНрдпреЗ рдареЗрд╡реЗрд▓. рдореНрд╣рдгреВрди, рдЖрдореНрд╣рд╛рд▓рд╛ рдпрд╛ рдлреЛрд▓реНрдбрд░рдордзреНрдпреЗ рд╕рд╛рдордЧреНрд░реА рдорд╛рдЙрдВрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЖрдгрд┐ рдЖрдореНрд╣реА рд╣реЗ рдХрд╕реЗ рдХрд░рддреЛ рдпрд╛рдЪрд╛ рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдЧрддреАрд╡рд░ рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдкрд░рд┐рдгрд╛рдо рд╣реЛрдИрд▓.
рдЪрд▓рд╛ рддреАрди рдкрд░реНрдпрд╛рдпрд╛рдВрдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдпрд╛.
рд╡реНрд╣реЗрд░рд┐рдПрдВрдЯ рдПрдХреНрд╕рдПрдирдпреВрдПрдордПрдХреНрд╕. рдЬрд╛рд╕реНрддреАрдд рдЬрд╛рд╕реНрдд рд╕реБрд░рдХреНрд╖рд┐рддрддрд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рд╕, рдкреНрд░рддреНрдпреЗрдХ рдХрдВрдЯреЗрдирд░рд╕рд╛рдареА рдЖрдкрдг рдХрдВрдЯреЗрдирд░/рдкреНрд░рддрд┐рдореЗрд╕рд╛рдареА рдЖрдкрд▓реЗ рд╕реНрд╡рддрдГрдЪреЗ рдлреЛрд▓реНрдбрд░ рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рд╡реНрд╣реЙрд▓реНрдпреВрдо-рдорд╛рдЙрдВрдЯрджреНрд╡рд╛рд░реЗ рдХрдВрдЯреЗрдирд░рд╢реА рдХрдиреЗрдХреНрдЯ рдХрд░реВ рд╢рдХрддрд╛. рдЖрдгрд┐ рдпрд╛рд╢рд┐рд╡рд╛рдп, /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
рд╕реБрд░рдХреНрд╖рд╛ рдЕрд╢рд╛ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдЪрд╛рд▓рдгрд╛рд░реНтАНрдпрд╛ рдмрд┐рд▓реНрдбрд╛рд▓рд╛ рдХрдорд╛рд▓ рд╕реБрд░рдХреНрд╖рд╛ рдЕрд╕рддреЗ: рдХреНрд╖рдорддрд╛ рд╡рд╛рдкрд░реВрди рддреНрдпрд╛рд▓рд╛ рдХреЛрдгрддреЗрд╣реА рд░реВрдЯ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рджрд┐рд▓реЗ рдЬрд╛рдд рдирд╛рд╣реАрдд рдЖрдгрд┐ рд╕рд░реНрд╡ SECOMP рдЖрдгрд┐ SELinux рдирд┐рд░реНрдмрдВрдз рддреНрдпрд╛рд╡рд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛рдд. рдЕрд╕рд╛ рдХрдВрдЯреЗрдирд░ тАФuidmap 0 рд╕рд╛рд░рдЦрд╛ рдкрд░реНрдпрд╛рдп рдЬреЛрдбреВрди рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдиреЗрдорд╕реНрдкреЗрд╕ рдЖрдпрд╕реЛрд▓реЗрд╢рдирд╕рд╣ рджреЗрдЦреАрд▓ рдЪрд╛рд▓рд╡рд┐рд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ: 100000:10000.
рдХрд╛рдордЧрд┐рд░реА рдкрд░рдВрддреБ рдпреЗрдереЗ рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рдЕрддреНрдпрд▓реНрдк рдЖрд╣реЗ, рдХрд╛рд░рдг рдХрдВрдЯреЗрдирд░ рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реАрдордзреАрд▓ рдХреЛрдгрддреНрдпрд╛рд╣реА рдкреНрд░рддрд┐рдорд╛ рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрд│реА рд╣реЛрд╕реНрдЯрд╡рд░ рдХреЙрдкреА рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд рдЖрдгрд┐ рдХреЕрд╢рд┐рдВрдЧ рдЕрдЬрд┐рдмрд╛рдд рдХрд╛рд░реНрдп рдХрд░рдд рдирд╛рд╣реА. рддреНрдпрд╛рдЪреЗ рдХрд╛рд░реНрдп рдкреВрд░реНрдг рдХрд░рддрд╛рдирд╛, рдмрд┐рд▓реНрдбрд╛ рдХрдВрдЯреЗрдирд░рдиреЗ рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реАрдордзреНрдпреЗ рдкреНрд░рддрд┐рдорд╛ рдкрд╛рдард╡рд┐рд▓реА рдкрд╛рд╣рд┐рдЬреЗ рдЖрдгрд┐ рд╣реЛрд╕реНрдЯрд╡рд░реАрд▓ рд╕рд╛рдордЧреНрд░реА рдирд╖реНрдЯ рдХреЗрд▓реА рдкрд╛рд╣рд┐рдЬреЗ. рдкреБрдвреАрд▓ рд╡реЗрд│реА рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛рд╡рд░, рддреА рдкреБрдиреНрд╣рд╛ рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реАрдордзреВрди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рд╛рд╡реА рд▓рд╛рдЧреЗрд▓, рдХрд╛рд░рдг рддреЛрдкрд░реНрдпрдВрдд рд╣реЛрд╕реНрдЯрд╡рд░ рдХрд╛рд╣реАрд╣реА рд╢рд┐рд▓реНрд▓рдХ рд░рд╛рд╣рдгрд╛рд░ рдирд╛рд╣реА.
рд╡реНрд╣реЗрд░рд┐рдПрдВрдЯ рдПрдХреНрд╕рдПрдирдпреВрдПрдордПрдХреНрд╕. рддреБрдореНрд╣рд╛рд▓рд╛ рдбреЙрдХрд░-рд╕реНрддрд░реАрдп рдХрд╛рдордЧрд┐рд░реАрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣реА рд╣реЛрд╕реНрдЯ рдХрдВрдЯреЗрдирд░/рд╕реНрдЯреЛрд░реЗрдЬ рдереЗрдЯ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдорд╛рдЙрдВрдЯ рдХрд░реВ рд╢рдХрддрд╛.
# 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
рд╕реБрд░рдХреНрд╖рд╛ рдХрдВрдЯреЗрдирд░ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪрд╛ рд╣рд╛ рд╕рд░реНрд╡рд╛рдд рдХрдореА рд╕реБрд░рдХреНрд╖рд┐рдд рдорд╛рд░реНрдЧ рдЖрд╣реЗ рдХрд╛рд░рдг рддреЗ рдХрдВрдЯреЗрдирд░рд▓рд╛ рд╣реЛрд╕реНрдЯ рд╕реНрдЯреЛрд░реЗрдЬ рд╕реБрдзрд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ рдЖрдгрд┐ рд╕рдВрднрд╛рд╡реНрдпрддрдГ рдкреЙрдбрдореЕрди рдХрд┐рдВрд╡рд╛ CRI-O рд▓рд╛ рджреБрд░реНрднрд╛рд╡рдирд╛рдпреБрдХреНрдд рдкреНрд░рддрд┐рдорд╛ рдлреАрдб рдХрд░реВ рд╢рдХрддреЗ. рдпрд╛рд╢рд┐рд╡рд╛рдп, рддреБрдореНрд╣рд╛рд▓рд╛ SELinux рдкреГрдердХреНрдХрд░рдг рдЕрдХреНрд╖рдо рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓ рдЬреЗрдгреЗрдХрд░реВрди Buildah рдХрдВрдЯреЗрдирд░рдордзреАрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реЛрд╕реНрдЯрд╡рд░реАрд▓ рд╕реНрдЯреЛрд░реЗрдЬрд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзреВ рд╢рдХрддреАрд▓. рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рд╣рд╛ рдкрд░реНрдпрд╛рдп рдбреЙрдХрд░ рд╕реЙрдХреЗрдЯрдкреЗрдХреНрд╖рд╛ рдЕрдЬреВрдирд╣реА рдЪрд╛рдВрдЧрд▓рд╛ рдЖрд╣реЗ рдХрд╛рд░рдг рдХрдВрдЯреЗрдирд░ рдЙрд░реНрд╡рд░рд┐рдд рд╕реБрд░рдХреНрд╖рд╛ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрджреНрд╡рд╛рд░реЗ рд▓реЙрдХ рдХреЗрд▓реЗрд▓рд╛ рдЖрд╣реЗ рдЖрдгрд┐ рд╣реЛрд╕реНрдЯрд╡рд░ рдлрдХреНрдд рдХрдВрдЯреЗрдирд░ рдЪрд╛рд▓рд╡реВ рд╢рдХрдд рдирд╛рд╣реА.
рдХрд╛рдордЧрд┐рд░реА рдпреЗрдереЗ рддреЗ рдХрдорд╛рд▓ рдЖрд╣реЗ, рдХрд╛рд░рдг рдХреЕрд╢рд┐рдВрдЧ рдкреВрд░реНрдгрдкрдгреЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ. рдЬрд░ рдкреЙрдбрдореЕрди рдХрд┐рдВрд╡рд╛ CRI-O рдиреЗ рдпрдЬрдорд╛рдирд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рддрд┐рдорд╛ рдЖрдзреАрдЪ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓реА рдЕрд╕реЗрд▓, рддрд░ рдХрдВрдЯреЗрдирд░рдордзреАрд▓ рдмрд┐рд▓реНрдбрд╛рд╣ рдкреНрд░рдХреНрд░рд┐рдпреЗрд▓рд╛ рддреА рдкреБрдиреНрд╣рд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рд╛рд╡реА рд▓рд╛рдЧрдгрд╛рд░ рдирд╛рд╣реА рдЖрдгрд┐ рдпрд╛ рдкреНрд░рддрд┐рдореЗрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдкреБрдвреАрд▓ рдмрд┐рд▓реНрдб рджреЗрдЦреАрд▓ рдХреЕрд╢реЗрдордзреВрди рдЖрд╡рд╢реНрдпрдХ рддреЗ рдШреЗрдК рд╢рдХрддреАрд▓. .
рд╡реНрд╣реЗрд░рд┐рдПрдВрдЯ рдПрдХреНрд╕рдПрдирдпреВрдПрдордПрдХреНрд╕. рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛рдВрд╕рд╛рдареА рдПрдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рдлреЛрд▓реНрдбрд░рд╕рд╣ рдПрдХрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдд рдЕрдиреЗрдХ рдкреНрд░рддрд┐рдорд╛ рдПрдХрддреНрд░ рдХрд░рдгреЗ рд╣реЗ рдпрд╛ рдкрджреНрдзрддреАрдЪреЗ рд╕рд╛рд░ рдЖрд╣реЗ.
# 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 рдиреЗ рдкреНрд░рддрд┐рдорд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓реНрдпрд╛рд╡рд░, рдкреНрд░рддрд┐рдорд╛ рдкреНрд░рдХрд▓реНрдкрд╛рддреАрд▓ рддреНрдпрд╛рдирдВрддрд░рдЪреНрдпрд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рдмрд┐рд▓реНрдбрдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реА рдЬрд╛рдК рд╢рдХрддреЗ.
рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдЯреЛрд░реЗрдЬ
╨г
рддреБрдореНрд╣реА рд╡рд░ рд╕реНрдХреНрд░реЛрд▓ рдХрд░реВрди рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдкрд╛рд╣рд┐рд▓реНрдпрд╛рд╕ рдЖрдореНрд╣реА рдЗрдореЗрдЬ 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 рдХрдВрдЯреЗрдирд░ рдЗрдореЗрдЬрдордзреНрдпреЗ рдмрджрд▓ рдХрд░рддреЛ, рд╕реНрдЯреЛрд░реЗрдЬ рдбреНрд░рд╛рдпрд╡реНрд╣рд░рд▓рд╛ /var/lib/shared рдлреЛрд▓реНрдбрд░рдордзреНрдпреЗ "additionalimagestores" рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕ рд╕рд╛рдВрдЧрддреЛ. рдЖрдгрд┐ рдкреБрдвреАрд▓ рдУрд│реАрдд рдЖрдореНрд╣реА рдПрдХ рд╕рд╛рдорд╛рдпрд┐рдХ рдлреЛрд▓реНрдбрд░ рддрдпрд╛рд░ рдХрд░рддреЛ рдЖрдгрд┐ рдХрд╛рд╣реА рд▓реЙрдХ рдлрд╛рдЗрд▓реНрд╕ рдЬреЛрдбрддреЛ рдЬреЗрдгреЗрдХрд░реВрди рдХрдВрдЯреЗрдирд░/рд╕реНрдЯреЛрд░реЗрдЬрдЪрд╛ рдЧреИрд░рд╡рд╛рдкрд░ рд╣реЛрдгрд╛рд░ рдирд╛рд╣реА. рдореВрд▓рдд:, рдЖрдореНрд╣реА рдлрдХреНрдд рдПрдХ рд░рд┐рдХреНрдд рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛ рд╕реНрдЯреЛрдЕрд░ рддрдпрд╛рд░ рдХрд░рдд рдЖрд╣реЛрдд.
рддреБрдореНрд╣реА рдХрдВрдЯреЗрдирд░/рд╕реНрдЯреЛрд░реЗрдЬ рдпрд╛ рдлреЛрд▓реНрдбрд░рдкреЗрдХреНрд╖рд╛ рд╡рд░рдЪреНрдпрд╛ рд╕реНрддрд░рд╛рд╡рд░ рдорд╛рдЙрдВрдЯ рдХреЗрд▓реНрдпрд╛рд╕, 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 рд╡рд░ рдлрдХреНрдд-рд╡рд╛рдЪрдиреАрдп рдореЛрдбрдордзреНрдпреЗ рдорд╛рдЙрдВрдЯ рдХреЗрд▓реЗ рдЖрд╣реЗ. рдореНрд╣рдгреВрди, рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдХрд╛рдо рдХрд░рддрд╛рдирд╛, рдмрд┐рд▓реНрдбрд╛ рдкреВрд░реНрд╡реА рдкреЙрдбрдореЕрди/рд╕реАрдЖрд░рдЖрдп-рдУ (рд╣реЕрд▓реЛ, рд╕реНрдкреАрдб) рд╡рд╛рдкрд░реВрди рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рдкреНрд░рддрд┐рдорд╛ рд╡рд╛рдкрд░реВ рд╢рдХрддреЗ, рдкрд░рдВрддреБ рдХреЗрд╡рд│ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рд╕реНрдЯреЛрд░реЗрдЬрд╡рд░ (рд╣реЕрд▓реЛ, рд╕реБрд░рдХреНрд╖рд╛) рд▓рд┐рд╣реВ рд╢рдХрддреЗ. рд╣реЗ рджреЗрдЦреАрд▓ рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рд╣реЗ рдХрдВрдЯреЗрдирд░рд╕рд╛рдареА SELinux рдкреГрдердХреНрдХрд░рдг рдЕрдХреНрд╖рдо рди рдХрд░рддрд╛ рдХреЗрд▓реЗ рдЬрд╛рддреЗ.
рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдкреНрд░реЗрд░рдгрд╛
рдХреЛрдгрддреНрдпрд╛рд╣реА рдкрд░рд┐рд╕реНрдерд┐рддреАрдд рддреБрдореНрд╣реА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рднрд╛рдВрдбрд╛рд░рд╛рддреВрди рдХреЛрдгрддреАрд╣реА рдкреНрд░рддрд┐рдорд╛ рд╣рдЯрд╡реВ рдирдпреЗ. рдЕрдиреНрдпрдерд╛, рдмрд┐рд▓реНрдбрд╛рд╣ рдХрдВрдЯреЗрдирд░ рдХреНрд░реЕрд╢ рд╣реЛрдК рд╢рдХрддреЛ.
рдЖрдгрд┐ рд╣реЗ рд╕рд░реНрд╡ рдлрд╛рдпрджреЗ рдирд╛рд╣реАрдд
рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдЯреЛрд░реЗрдЬрдЪреА рд╢рдХреНрдпрддрд╛ рд╡рд░реАрд▓ рдкрд░рд┐рд╕реНрдерд┐рддреАрдкреБрд░рддреА рдорд░реНрдпрд╛рджрд┐рдд рдирд╛рд╣реА. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреБрдореНрд╣реА рд╕рд░реНрд╡ рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛ рд╢реЗрдЕрд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдЯреЛрд░реЗрдЬрд╡рд░ рдареЗрд╡реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рд╕рд░реНрд╡ Buildah рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рджреЗрдК рд╢рдХрддрд╛. рд╕рдордЬрд╛ рдЖрдордЪреНрдпрд╛рдХрдбреЗ рд╢реЗрдХрдбреЛ рдкреНрд░рддрд┐рдорд╛ рдЖрд╣реЗрдд рдЬреНрдпрд╛ рдЖрдордЪреА CI/CD рдкреНрд░рдгрд╛рд▓реА рдирд┐рдпрдорд┐рддрдкрдгреЗ рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рддреЗ. рдЖрдореНрд╣реА рдпрд╛ рд╕рд░реНрд╡ рдкреНрд░рддрд┐рдорд╛ рдПрдХрд╛ рд╕реНрдЯреЛрд░реЗрдЬ рд╣реЛрд╕реНрдЯрд╡рд░ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЛ рдЖрдгрд┐ рдирдВрддрд░, рдкреНрд░рд╛рдзрд╛рдиреНрдпреАрдХреГрдд рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдЯреЛрд░реЗрдЬ рдЯреВрд▓реНрд╕ (NFS, Gluster, Ceph, ISCSI, S3...) рд╡рд╛рдкрд░реВрди, рдЖрдореНрд╣реА рд╕рд░реНрд╡ Buildah рдХрд┐рдВрд╡рд╛ Kubernetes рдиреЛрдбреНрд╕рд╕рд╛рдареА рдпрд╛ рд╕реНрдЯреЛрд░реЗрдЬрдордзреНрдпреЗ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╡реЗрд╢ рдЙрдШрдбрддреЛ.
рдЖрддрд╛ рд╣реЗ рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдЯреЛрд░реЗрдЬ /var/lib/shared рд╡рд░ Buildah рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдорд╛рдЙрдВрдЯ рдХрд░рдгреЗ рдкреБрд░реЗрд╕реЗ рдЖрд╣реЗ рдЖрдгрд┐ рддреЗрдЪ - Buildah рдХрдВрдЯреЗрдирд░реНрд╕рдирд╛ рдпрд╛рдкреБрдвреЗ рдкреБрд▓рджреНрд╡рд╛рд░реЗ рдкреНрд░рддрд┐рдорд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдирд╛рд╣реА. рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ, рдЖрдореНрд╣реА рд▓реЛрдХрд╕рдВрдЦреНрдпреЗрдкреВрд░реНрд╡реАрдЪрд╛ рдЯрдкреНрдкрд╛ рдлреЗрдХреВрди рджреЗрддреЛ рдЖрдгрд┐ рдХрдВрдЯреЗрдирд░ рд░реЛрд▓ рдЖрдЙрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд▓рдЧреЗрдЪ рддрдпрд╛рд░ рдЖрд╣реЛрдд.
рдЖрдгрд┐ рдЕрд░реНрдерд╛рддрдЪ, рд╣реЗ рдереЗрдЯ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд╕рд┐рд╕реНрдЯреАрдордордзреНрдпреЗ рдХрд┐рдВрд╡рд╛ рдХрдВрдЯреЗрдирд░ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░рдордзреНрдпреЗ рдкреНрд░рддрд┐рдорд╛ рдбрд╛рдЙрдирд▓реЛрдб рди рдХрд░рддрд╛ рдХреБрдареЗрд╣реА рдХрдВрдЯреЗрдирд░ рд▓рд╛рдБрдЪ рдЖрдгрд┐ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. рд╢рд┐рд╡рд╛рдп, рдХрдВрдЯреЗрдирд░ рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реА, рддреНрдпрд╛рд╡рд░ рдЕрдкрдбреЗрдЯ рдХреЗрд▓реЗрд▓реА рдкреНрд░рддрд┐рдорд╛ рдЕрдкрд▓реЛрдб рдХрд░рдгреНрдпрд╛рдЪреА рдкреБрд╢ рд╡рд┐рдирдВрддреА рдкреНрд░рд╛рдкреНрдд рдХрд░реВрди, рд╣реА рдкреНрд░рддрд┐рдорд╛ рдЖрдкреЛрдЖрдк рд╕рд╛рдорд╛рдпрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдЯреЛрд░реЗрдЬрд╡рд░ рдкрд╛рдард╡реВ рд╢рдХрддреЗ, рдЬрд┐рдереЗ рддреА рд╕рд░реНрд╡ рдиреЛрдбреНрд╕рд╕рд╛рдареА рддреНрд╡рд░рд┐рдд рдЙрдкрд▓рдмреНрдз рд╣реЛрддреЗ.
рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛ рдХрдзреАрдХрдзреА рдЕрдиреЗрдХ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯреНрд╕ рдЖрдХрд╛рд░рд╛рдд рдкреЛрд╣реЛрдЪреВ рд╢рдХрддрд╛рдд. рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдЯреЛрд░реЗрдЬрдЪреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдиреЛрдбреНрд╕рдордзреНрдпреЗ рдЕрд╢рд╛ рдкреНрд░рддрд┐рдорд╛рдВрдЪреЗ рдХреНрд▓реЛрдирд┐рдВрдЧ рдЯрд╛рд│рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ рдЖрдгрд┐ рдХрдВрдЯреЗрдирд░ рд▓рд╛рдБрдЪ рдХрд░рдгреЗ рдЬрд╡рд│рдЬрд╡рд│ рддрд╛рддреНрдХрд╛рд│ рдмрдирд╡рддреЗ.
рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдЖрдореНрд╣реА рд╕рдзреНрдпрд╛ рдУрд╡реНрд╣рд░рд▓реЗ рд╡реНрд╣реЙрд▓реНрдпреВрдо рдорд╛рдЙрдВрдЯреНрд╕ рдирд╛рд╡рд╛рдЪреНрдпрд╛ рдПрдХрд╛ рдирд╡реАрди рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рд╡рд░ рдХрд╛рдо рдХрд░рдд рдЖрд╣реЛрдд, рдЬреНрдпрд╛рдореБрд│реЗ рдХрдВрдЯреЗрдирд░ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЕрдзрд┐рдХ рдЬрд▓рдж рд╣реЛрдИрд▓.
рдирд┐рд╖реНрдХрд░реНрд╖
Kubernetes/CRI-O, Podman рдХрд┐рдВрд╡рд╛ Docker рдордзреАрд▓ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ Buildah рдЪрд╛рд▓рд╡рдгреЗ docker.socket рд╡рд╛рдкрд░рдгреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп, рд╕реЛрдкреЗ рдЖрдгрд┐ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдЖрд╣реЗ. рдЖрдореНрд╣реА рдкреНрд░рддрд┐рдорд╛рдВрд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рдЪреА рд▓рд╡рдЪрд┐рдХрддрд╛ рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рд╡рд╛рдврд╡рд▓реА рдЖрд╣реЗ, рддреНрдпрд╛рдореБрд│реЗ рд╕реБрд░рдХреНрд╖рд╛ рдЖрдгрд┐ рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рдпрд╛рдВрдЪреНрдпрд╛рддреАрд▓ рд╕рдорддреЛрд▓ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣реА рддреНрдпрд╛рдВрдирд╛ рд╡рд┐рд╡рд┐рдз рдорд╛рд░реНрдЧрд╛рдВрдиреА рдЪрд╛рд▓рд╡реВ рд╢рдХрддрд╛.
рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдЯреЛрд░реЗрдЬрдЪреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдиреЛрдбреНрд╕рд╡рд░ рдкреНрд░рддрд┐рдорд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдгреЗ рд╡реЗрдЧрд╡рд╛рди рдХрд┐рдВрд╡рд╛ рдкреВрд░реНрдгрдкрдгреЗ рдХрд╛рдвреВрди рдЯрд╛рдХрдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ.
рд╕реНрддреНрд░реЛрдд: www.habr.com