{"id":38785,"date":"2019-10-31T22:25:55","date_gmt":"2019-10-31T19:25:55","guid":{"rendered":"https:\/\/prohoster.info\/blog\/rekomendatsii-po-zapusku-buildah-vnutri-kontejnera\/"},"modified":"2019-10-31T22:25:55","modified_gmt":"2019-10-31T19:25:55","slug":"rekomendatsii-po-zapusku-buildah-vnutri-kontejnera","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/rekomendatsii-po-zapusku-buildah-vnutri-kontejnera","title":{"rendered":"Rekommendationer f\u00f6r att k\u00f6ra Buildah inuti en container","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Vad \u00e4r f\u00f6rdelarna med att dela upp k\u00f6rmilj\u00f6n f\u00f6r containrar i separata verktygskomponenter? Bland annat att dessa verktyg kan b\u00f6rja kombineras f\u00f6r att skydda varandra.<\/p>\n<p><img decoding=\"async\" alt=\"Rekommendationer f\u00f6r att k\u00f6ra Buildah inuti en container\" src=\"\/wp-content\/uploads\/2019\/10\/f8b21da6a59e461effbe3ee27c07012c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nM\u00e5nga attraheras av id\u00e9n att bygga OCI-bilder f\u00f6r containrar inom <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/\">Kubernetes<\/a><\/noindex> eller ett liknande system. Anta att vi har CI\/CD som kontinuerligt bygger bilder, d\u00e5 \u00e4r n\u00e5got som <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.redhat.com\/openshift\/\">Red Hat OpenShift<\/a><\/noindex>\/Kubernetes \u0431\u044b\u043b\u043e \u0431\u044b \u0432\u0435\u0441\u044c\u043c\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435. \u0414\u043e \u043d\u0435\u0434\u0430\u0432\u043d\u0438\u0445 \u043f\u043e\u0440 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043b\u044e\u0434\u0435\u0439 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0430\u0432\u0430\u043b\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u043a Docker-\u0441\u043e\u043a\u0435\u0442\u0443 \u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 docker build. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.projectatomic.io\/blog\/2015\/08\/why-we-dont-let-non-root-users-run-docker-in-centos-fedora-or-rhel\/\">Vi visade redan f\u00f6r flera \u00e5r sedan<\/a><\/noindex>, att detta \u00e4r mycket os\u00e4kert, faktiskt \u00e4r det till och med s\u00e4mre \u00e4n att ge root- eller sudo-\u00e5tkomst utan l\u00f6senord.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nD\u00e4rf\u00f6r f\u00f6rs\u00f6ker folk st\u00e4ndigt att k\u00f6ra Buildah i en container. Kort sagt, vi skapade <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/containers\/Demos\/tree\/master\/running\/BuildahInPodman\">exempel<\/a><\/noindex> det som vi anser \u00e4r det b\u00e4sta s\u00e4ttet att k\u00f6ra Buildah inuti en container och publicerade de relevanta bilderna p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/quay.io\/buildah\">quay.io\/buildah<\/a><\/noindex>. L\u00e5t oss b\u00f6rja...<\/p>\n<h3>Inst\u00e4llning<\/h3>\n<p>\nDessa bilder \u00e4r sammanst\u00e4llda fr\u00e5n Dockerfiles som kan hittas i Buildah-f\u00f6rvaret i mappen <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/containers\/buildah\/tree\/master\/contrib\/buildahimage\">buildahimage<\/a><\/noindex>.<br \/>\nH\u00e4r kommer vi att titta p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/containers\/buildah\/blob\/master\/buildahimage\/stable\/Dockerfile\">den stabila versionen av Dockerfile<\/a><\/noindex>.<\/p>\n<pre><code class=\"plaintext\"># stable\/Dockerfile\n#\n# Build a Buildah container image from the latest\n# stable version of Buildah on the Fedoras Updates System.\n# https:\/\/bodhi.fedoraproject.org\/updates\/?search=buildah\n# This image can be used to create a secured container\n# that runs safely with privileges within the container.\n#\nFROM fedora:latest\n\n# Don't include container-selinux and remove\n# directories used by dnf that are just taking\n# up space.\nRUN yum -y install buildah fuse-overlayfs --exclude container-selinux; rm -rf \/var\/cache \/var\/log\/dnf* \/var\/log\/yum.*\n\n# Adjust storage.conf to enable Fuse storage.\nRUN sed -i -e 's|^#mount_program|mount_program|g' -e '\/additionalimage.*\/a \"\/var\/lib\/shared\",' \/etc\/containers\/storage.conf\n<\/code><\/pre>\n<p>\nIst\u00e4llet f\u00f6r OverlayFS, som implementeras p\u00e5 v\u00e4rdens Linux-k\u00e4rnniv\u00e5, anv\u00e4nder vi inuti containern programmet <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/containers\/fuse-overlayfs\">fuse-overlay<\/a><\/noindex>, eftersom OverlayFS f\u00f6r n\u00e4rvarande endast kan montera om den f\u00e5r SYS_ADMIN-beh\u00f6righet via Linux-capabilities. Och vi vill k\u00f6ra v\u00e5ra Buildah-containrar utan n\u00e5gra root-beh\u00f6righeter. Fuse-overlay fungerar ganska snabbt och presterar b\u00e4ttre \u00e4n lagringsdrivrutinen VFS. Observera att n\u00e4r du k\u00f6r en Buildah-container som anv\u00e4nder Fuse, kr\u00e4vs det att du tillhandah\u00e5ller en enhet \\\/dev\\\/fuse.<\/p>\n<pre><code class=\"plaintext\">podman run --device \\\/dev\\\/fuse quay.io\\\/buildahctr ...\nRUN 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\n<\/code><\/pre>\n<p>\nD\u00e4refter skapar vi en katalog f\u00f6r ytterligare lagringsutrymmen. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/containers\/storage\">Container\\\/storage<\/a><\/noindex> st\u00f6der konceptet att koppla in ytterligare skrivskyddade lagringsutrymmen f\u00f6r bilder. Till exempel kan du st\u00e4lla in overlay-lagringsomr\u00e5de p\u00e5 en maskin, och sedan under montera detta lagringsutrymme p\u00e5 en annan maskin via NFS och anv\u00e4nda bilder fr\u00e5n det utan att ladda ner genom pull. Vi beh\u00f6ver detta lagringsutrymme f\u00f6r att kunna koppla en volym fr\u00e5n v\u00e4rden och anv\u00e4nda den inuti containern.<\/p>\n<pre><code class=\"plaintext\"># Set up environment variables to note that this is\n# not starting with user namespace and default to\n# isolate the filesystem with chroot.\nENV _BUILDAH_STARTED_IN_USERNS=\"\" BUILDAH_ISOLATION=chroot\n<\/code><\/pre>\n<p>\nOch slutligen, genom att anv\u00e4nda milj\u00f6variabeln BUILDAH_ISOLATION s\u00e4ger vi att Buildah-kontainern som standard ska k\u00f6ras med chroot-isolering. Ytterligare isolering beh\u00f6vs inte h\u00e4r eftersom vi redan arbetar i en kontainer. F\u00f6r att Buildah ska kunna skapa sina egna kontainrar med namnrymder kr\u00e4vs SYS_ADMIN-r\u00e4ttigheter, vilket inneb\u00e4r att vi m\u00e5ste l\u00e4tta p\u00e5 SELinux- och SECCOMP-reglerna f\u00f6r kontainern, vilket strider mot v\u00e5r installation att bygga fr\u00e5n en s\u00e4ker kontainer.<\/p>\n<h3>Starta Buildah inuti en kontainer<\/h3>\n<p>\nDen beskrivna modellen f\u00f6r Buildah-kontainern till\u00e5ter flexibilitet i hur s\u00e5dana kontainrar k\u00f6rs.<\/p>\n<h4>Hastighet kontra s\u00e4kerhet<\/h4>\n<p>\nDatas\u00e4kerhet \u00e4r alltid en kompromiss mellan hastigheten p\u00e5 processen och hur mycket skydd som \u00e4r p\u00e5 plats. Detta p\u00e5st\u00e5ende g\u00e4ller \u00e4ven vid byggande av kontainrar, s\u00e5 nedan kommer vi att \u00f6verv\u00e4ga alternativ f\u00f6r en s\u00e5dan kompromiss.<\/p>\n<p>Den tidigare n\u00e4mnda kontainerbilden kommer att h\u00e5lla sitt lagringsutrymme i \/var\/lib\/containers. D\u00e4rf\u00f6r m\u00e5ste vi montera inneh\u00e5llet i denna mapp, och hur vi g\u00f6r det kommer att p\u00e5verka hastigheten p\u00e5 byggandet av kontainerbilder avsev\u00e4rt.<\/p>\n<p>Vi \u00f6verv\u00e4ger tre alternativ.<\/p>\n<p><b>Alternativ 1.<\/b> Om maximal s\u00e4kerhet kr\u00e4vs kan en egen mapp f\u00f6r containers\/image skapas f\u00f6r varje kontainer och kopplas till kontainern via volume-mount. Dessutom kan kontextmappen placeras i sj\u00e4lva kontainern, i mappen \/build:<\/p>\n<pre><code class=\"plaintext\"># mkdir \/var\/lib\/containers1\n# podman run -v .\/build:\/build:z -v \/var\/lib\/containers1:\/var\/lib\/containers:Z quay.io\/buildah\/stable\nbuildah  -t image1 bud \/build\n# podman run -v \/var\/lib\/containers1:\/var\/lib\/containers:Z quay.io\/buildah\/stable buildah  push  image1 registry.company.com\/myuser\n# rm -rf \/var\/lib\/containers1\n<\/code><\/pre>\n<p>\n<i>S\u00e4kerhet.<\/i> Att arbeta i en s\u00e5dan container med Buildah ger maximal s\u00e4kerhet: den f\u00e5r inga root-beh\u00f6righeter via capabilities, och alla begr\u00e4nsningar fr\u00e5n SECOMP och SELinux till\u00e4mpas. En s\u00e5dan container kan till och med k\u00f6ras med isolering av User Namespace genom att l\u00e4gga till alternativ som &#8212;uidmap 0:100000:10000.<\/p>\n<p><i>Prestanda.<\/i> Prestandan h\u00e4r \u00e4r dock minimal, eftersom alla bilder fr\u00e5n kontainerregister varje g\u00e5ng kopieras till v\u00e4rden, och caching fungerar inte alls. Efter avslutad process m\u00e5ste Buildah-kontainern skicka bilden till registret och f\u00f6rst\u00f6ra inneh\u00e5llet p\u00e5 v\u00e4rden. N\u00e4r kontainerbilden byggs n\u00e4sta g\u00e5ng m\u00e5ste den laddas ner igen fr\u00e5n registret, eftersom inget kommer att \u00e5terst\u00e5 p\u00e5 v\u00e4rden efter det.<\/p>\n<p><b>Alternativ 2.<\/b> Om Docker-niv\u00e5 prestanda beh\u00f6vs kan container\/storage fr\u00e5n v\u00e4rden monteras direkt in i kontainern.<\/p>\n<pre><code class=\"plaintext\"># 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\n# podman run -v \/var\/lib\/containers:\/var\/lib\/containers --security-opt label:disabled  quay.io\/buildah\/stable buildah push image2 registry.company.com\/myuser\n<\/code><\/pre>\n<p>\n<i>S\u00e4kerhet.<\/i> Det h\u00e4r \u00e4r det minst s\u00e4kra s\u00e4ttet att bygga containrar, eftersom containern h\u00e4r till\u00e5ts att modifiera lagringen p\u00e5 v\u00e4rden, och potentiellt kan den inf\u00f6ra en skadlig bild till Podman eller CRI-O. Dessutom m\u00e5ste du inaktivera SELinux-separation s\u00e5 att processerna i Buildah-containern kan interagera med lagret p\u00e5 v\u00e4rden. Observera att detta alternativ fortfarande \u00e4r b\u00e4ttre \u00e4n Docker-socketen, eftersom containern blockeras av de \u00e5terst\u00e5ende s\u00e4kerhetsfunktionerna och inte bara kan ta och starta en vilken container som helst p\u00e5 v\u00e4rden.<\/p>\n<p><i>Prestanda.<\/i> H\u00e4r \u00e4r den maximal, eftersom caching utnyttjas fullt ut. Om Podman eller CRI-O redan har h\u00e4mtat den n\u00f6dv\u00e4ndiga bilden p\u00e5 v\u00e4rden, beh\u00f6ver Buildah-processen inuti containern inte ladda ner den igen, och efterf\u00f6ljande byggen baserade p\u00e5 denna bild kan ocks\u00e5 ta det som finns i cachen.<\/p>\n<p><b>Alternativ 3.<\/b> Essensen av detta s\u00e4tt \u00e4r att sammanfoga flera bilder till ett projekt med en gemensam mapp f\u00f6r containerbilder.<\/p>\n<pre><code class=\"plaintext\"># mkdir \/var\/lib\/project3\n# podman run --security-opt label_level=s0:C100, C200 -v .\/build:\/build:z \n-v \/var\/lib\/project3:\/var\/lib\/containers:Z quay.io\/buildah\/stable buildah  -t image3 bud \/build\n# podman run --security-opt label_level=s0:C100, C200 \n-v \/var\/lib\/project3:\/var\/lib\/containers quay.io\/buildah\/stable buildah push image3  registry.company.com\/myuser\n<\/code><\/pre>\n<p>\nI det h\u00e4r exemplet tar vi inte bort projektmappen (\/var\/lib\/project3) mellan k\u00f6rningar, s\u00e5 alla efterf\u00f6ljande byggen inom projektet drar nytta av cachning.<\/p>\n<p><i>S\u00e4kerhet.<\/i> N\u00e5got mitt emellan alternativ 1 och 2. \u00c5 ena sidan har inte containrarna tillg\u00e5ng till inneh\u00e5llet p\u00e5 v\u00e4rden, och kan d\u00e4rf\u00f6r inte inf\u00f6ra n\u00e5got d\u00e5ligt i Podman\/CRI-O:s bildlager. \u00c5 andra sidan kan containern inom sitt projekt blanda sig i bygget av andra containrar.<\/p>\n<p><i>Prestanda.<\/i> H\u00e4r \u00e4r den s\u00e4mre \u00e4n att anv\u00e4nda en gemensam cache p\u00e5 v\u00e4rdniv\u00e5, eftersom bilder som redan har laddats ner tidigare via Podman\/CRI-O inte kan anv\u00e4ndas. Men efter att Buildah har laddat ner bilden kan den anv\u00e4ndas i alla efterf\u00f6ljande byggen inom projektet.<\/p>\n<h4>Ytterligare lagringsutrymmen<\/h4>\n<p>\nHos <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/containers\/storage\">containers\/storage<\/a><\/noindex> Det finns en fantastisk funktion som kallas ytterligare lagringsutrymmen (additional stores), vilket g\u00f6r att containermotorer kan anv\u00e4nda externa bildlagringsutrymmen i skrivskyddat l\u00e4ge vid start och byggande av containrar. I praktiken kan du l\u00e4gga till ett eller flera \"endast f\u00f6r l\u00e4sning\"-lagringsutrymmen i filen storage.conf, s\u00e5 att container-motorn letar efter den n\u00f6dv\u00e4ndiga bilden n\u00e4r containern startas. Den kommer endast att ladda ner bilden fr\u00e5n registret om den inte hittar den i n\u00e5got av dessa lagringsutrymmen. Container-motorn kan endast skriva till skrivbara lagringsutrymmen\u2026<\/p>\n<p>Om vi rullar upp och tittar p\u00e5 Dockerfile som vi anv\u00e4nder f\u00f6r att bygga bilden quay.io\/buildah\/stable, s\u00e5 finns det s\u00e5dana rader:<\/p>\n<pre><code class=\"plaintext\"># Adjust storage.conf to enable Fuse storage.\nRUN sed -i -e 's|^#mount_program|mount_program|g' -e '\/additionalimage.*\/a \"\/var\/lib\/shared\",' \/etc\/containers\/storage.conf\nRUN 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\n<\/code><\/pre>\n<p>\nI den f\u00f6rsta raden modifierar vi \/etc\/containers\/storage.conf inuti containerbilden, och s\u00e4ger till lagringsdrivrutinen att anv\u00e4nda \"additionalimagestores\" i mappen \/var\/lib\/shared. I n\u00e4sta rad skapar vi en gemensam mapp och l\u00e4gger till n\u00e5gra l\u00e5s-filer f\u00f6r att undvika konflikter med containers\/storage. I grund och botten skapar vi bara ett tomt lagringsutrymme f\u00f6r containerbilder. <\/p>\n<p>Om containers\/storage monteras ovanf\u00f6r denna mapp, kan Buildah anv\u00e4nda bilder.<\/p>\n<p>L\u00e5t oss nu \u00e5terkomma till det tidigare diskuterade Alternativ 2, d\u00e4r Buildah-containern kan l\u00e4sa och skriva i containers\/store p\u00e5 v\u00e4rdarna och d\u00e4rmed ha maximal prestanda genom att cacha bilder p\u00e5 Podman\/CRI-O-niv\u00e5, men ger minst s\u00e4kerhet eftersom den kan skriva direkt i lagringsutrymmena. Nu l\u00e4gger vi till ytterligare lagringsutrymmen och f\u00e5r det b\u00e4sta av tv\u00e5 v\u00e4rldar.<\/p>\n<pre><code class=\"plaintext\"># mkdir \/var\/lib\/containers4\n# 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 \n buildah  -t image4 bud \/build\n# podman run -v \/var\/lib\/containers\/storage:\/var\/lib\/shared:ro  \n-v &gt;\/var\/lib\/containers4:\/var\/lib\/containers:Z quay.io\/buildah\/stable buildah push image4  registry.company.com\/myuser\n# rm -rf \/var\/lib\/continers4\n<\/code><\/pre>\n<p>\nNotera att \/var\/lib\/containers\/storage p\u00e5 v\u00e4rden \u00e4r monterad i \/var\/lib\/shared inuti containern i skrivskyddat l\u00e4ge. D\u00e4rf\u00f6r kan Buildah, n\u00e4r den arbetar i containern, anv\u00e4nda alla bilder som tidigare har laddats ner av Podman\/CRI-O (heja hastighet), men kan bara skriva till sitt eget lagringsutrymme (heja s\u00e4kerhet). Observera ocks\u00e5 att detta g\u00f6rs utan att st\u00e4nga av SELinux-separationen f\u00f6r containern.<\/p>\n<h4>En viktig detalj<\/h4>\n<p>\nDu f\u00e5r absolut inte ta bort n\u00e5gra bilder fr\u00e5n det underliggande lagringsutrymmet. Annars kan Buildah-containern krascha.<\/p>\n<h4>Och detta \u00e4r verkligen inte alla f\u00f6rdelar<\/h4>\n<p>\nM\u00f6jligheterna f\u00f6r ytterligare lagringsl\u00f6sningar \u00e4r inte begr\u00e4nsade till det ovan beskrivna scenariot. Till exempel kan alla containerbilder placeras i en gemensam n\u00e4tverkslagring och ge \u00e5tkomst till alla Buildah-containrar. Anta att vi har hundratals bilder som v\u00e5rt CI\/CD-system regelbundet anv\u00e4nder f\u00f6r att bygga containerbilder. Vi koncentrerar alla dessa bilder p\u00e5 en enda lagringsv\u00e4rd och \u00f6ppnar sedan, med hj\u00e4lp av f\u00f6redragna n\u00e4tverkslagringsmetoder (NFS, Gluster, Ceph, ISCSI, S3&#8230;), gemensam tillg\u00e5ng till denna lagring f\u00f6r alla Buildah- eller Kubernetes-noder.<\/p>\n<p>Nu r\u00e4cker det med att montera detta n\u00e4tverkslagringsutrymme i Buildah-containern p\u00e5 \/var\/lib\/shared och allt \u2013 Buildah-containrarna beh\u00f6ver \u00f6verhuvudtaget inte ladda ner bilder via pull l\u00e4ngre. P\u00e5 s\u00e5 s\u00e4tt eliminerar vi f\u00f6rberedelsefasen (pre-population) och \u00e4r genast redo att rulla ut containrar.<\/p>\n<p>Och sj\u00e4lvklart kan detta anv\u00e4ndas inom ett befintligt Kubernetes-system eller containerinfrastruktur f\u00f6r att k\u00f6ra och utf\u00f6ra containrar var som helst utan att ladda ner bilder via pull. Dessutom kan ett containerregister, som f\u00e5r en push-f\u00f6rfr\u00e5gan om att ladda upp en uppdaterad bild, automatiskt skicka denna bild till det gemensamma n\u00e4tverkslagringsutrymmet, d\u00e4r den omedelbart blir tillg\u00e4nglig f\u00f6r alla noder.<\/p>\n<p>Storleken p\u00e5 containerbilder kan ibland n\u00e5 flera gigabyte. Funktionaliteten hos ytterligare lagringsutrymmen g\u00f6r det m\u00f6jligt att undvika kloning av s\u00e5dana bilder mellan noder och g\u00f6r utrullning av containrar praktiskt taget omedelbar.<\/p>\n<p>Dessutom arbetar vi f\u00f6r n\u00e4rvarande med en ny funktion f\u00f6r overlay volume mounts, som kommer att g\u00f6ra byggandet av containrar \u00e4nnu snabbare.<\/p>\n<h3>Slutsats<\/h3>\n<p>\nAtt k\u00f6ra Buildah inuti en container i en Kubernetes\/CRI-O, Podman eller till och med Docker-milj\u00f6 \u00e4r fullt m\u00f6jligt, dessutom \u00e4r det enkelt och mycket s\u00e4krare \u00e4n att anv\u00e4nda docker.socket. Vi har avsev\u00e4rt \u00f6kat flexibiliteten i arbetet med bilder, och nu kan du k\u00f6ra dem p\u00e5 olika s\u00e4tt f\u00f6r en optimal balans mellan s\u00e4kerhet och prestanda.<\/p>\n<p>Funktionaliteten hos ytterligare lagringsutrymmen g\u00f6r det m\u00f6jligt att p\u00e5skynda eller till och med helt eliminera nedladdning av bilder till noder.<br \/>\n<br \/>K\u00e4lla: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/redhatrussia\/blog\/470928\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u0447\u0435\u043c \u043f\u0440\u0435\u043b\u0435\u0441\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u0440\u0435\u0434\u044b \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435? \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u044d\u0442\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u0437\u0430\u0449\u0438\u0449\u0430\u043b\u0438 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430. \u041c\u043d\u043e\u0433\u0438\u0445 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u0438\u0434\u0435\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043d\u044b\u0445 OCI-\u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 Kubernetes \u0438\u043b\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c CI\/CD, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0437\u044b, \u0442\u043e\u0433\u0434\u0430 \u0447\u0442\u043e-\u0442\u043e \u0442\u0438\u043f\u0430 Red Hat OpenShift\/Kubernetes \u0431\u044b\u043b\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":29093,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-38785","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u0447\u0435\u043c \u043f\u0440\u0435\u043b\u0435\u0441\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u0440\u0435\u0434\u044b \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435?\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/rekomendatsii-po-zapusku-buildah-vnutri-kontejnera\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u043f\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0443 Buildah \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u0447\u0435\u043c \u043f\u0440\u0435\u043b\u0435\u0441\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u0440\u0435\u0434\u044b \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435?\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/rekomendatsii-po-zapusku-buildah-vnutri-kontejnera\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:25:55+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:25:55+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Rekommendationer f\u00f6r att k\u00f6ra Buildah inuti en container | ProHoster","description":"Vad \u00e4r f\u00f6rdelen med att dela upp k\u00f6rmilj\u00f6n f\u00f6r containrar i enskilda verktygskomponenter?","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/rekomendatsii-po-zapusku-buildah-vnutri-kontejnera","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u043f\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0443 Buildah \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 | ProHoster","og:description":"\u0412 \u0447\u0435\u043c \u043f\u0440\u0435\u043b\u0435\u0441\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u0440\u0435\u0434\u044b \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435?","og:url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/rekomendatsii-po-zapusku-buildah-vnutri-kontejnera","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:25:55+00:00","article:modified_time":"2019-10-31T19:25:55+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"38785","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 23:24:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:03:14","updated":"2026-01-23 23:24:21","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/38785","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=38785"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/38785\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/29093"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=38785"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=38785"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=38785"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}