{"id":42175,"date":"2019-03-18T00:00:00","date_gmt":"2019-03-17T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/evolyutsiya-sredstv-postavki-ili-razmyshleniya-o-docker-deb-jar-i-prochem"},"modified":"2020-02-18T13:45:00","modified_gmt":"2020-02-18T10:45:00","slug":"evolyutsiya-sredstv-postavki-ili-razmyshleniya-o-docker-deb-jar-i-prochem","status":"publish","type":"post","link":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/evolyutsiya-sredstv-postavki-ili-razmyshleniya-o-docker-deb-jar-i-prochem","title":{"rendered":"Udviklingen af leveringsmetoder, eller overvejelser om Docker, deb, jar og andet","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Udviklingen af leveringsmetoder, eller overvejelser om Docker, deb, jar og andet\" src=\"\/wp-content\/uploads\/2019\/03\/3c677d0628824497039901c0179a8749.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u00e5 et tidspunkt besluttede jeg mig for at skrive en artikel om levering i form af Docker-containere og deb-pakker, men da jeg begyndte, blev jeg af en eller anden grund f\u00f8rt tilbage til de tidlige dage med personlige computere og endda lommeregnere. S\u00e5 i stedet for t\u00f8rre sammenligninger mellem Docker og deb, fik jeg disse overvejelser om evolution, som jeg pr\u00e6senterer for Dem.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nEnhver produkt, uanset hvad det er, skal p\u00e5 en eller anden m\u00e5de n\u00e5 frem til produktionsserverne, v\u00e6re konfigureret og lanceret. Det er netop det, denne artikel vil omhandle.<\/p>\n<p>Mine overvejelser vil v\u00e6re i en historisk kontekst, \"hvad jeg ser - om det synger jeg\", hvad jeg s\u00e5, da jeg f\u00f8rst begyndte at skrive kode, og hvad jeg observerer nu, hvad vi selv bruger i \u00f8jeblikket, og hvorfor. Artiklen har ikke til hensigt at v\u00e6re en udt\u00f8mmende unders\u00f8gelse, nogle punkter er udeladt, det er mit personlige syn p\u00e5, hvad der var, og hvad der er nu.<\/p>\n<p>S\u00e5, i de gode gamle dage\u2026 den tidligste m\u00e5de at levere p\u00e5, som jeg oplevede - det var kassetter fra b\u00e5ndoptagere. Jeg havde en BK-0010.01 computer...<\/p>\n<h2>Lommeregnerens \u00e6ra<\/h2>\n<p>\nNej, der var et endnu tidligere \u00f8jeblik, der var ogs\u00e5 en lommeregner <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%B8%D0%BA%D0%B0_%D0%9C%D0%9A-61\">\u041c\u041a-61<\/a><\/noindex> og <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%B8%D0%BA%D0%B0_%D0%9C%D0%9A-52\">\u041c\u041a-52<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"Udviklingen af leveringsmetoder, eller overvejelser om Docker, deb, jar og andet\" src=\"\/wp-content\/uploads\/2019\/03\/ea68507cd83b4da3038cea7329ff1813.jpg\" style=\"display:block;margin: 0 auto;\" \/> S\u00e5 da jeg havde <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%B8%D0%BA%D0%B0_%D0%9C%D0%9A-61\">\u041c\u041a-61<\/a><\/noindex>, var m\u00e5den at overf\u00f8re programmer p\u00e5 et almindeligt papirark med firkanter, hvor programmet var skrevet, som ved behov blev indtastet manuelt i lommeregneren. Vil du spille (ja, ja, selv p\u00e5 denne forhistoriske lommeregner var der spil) - s\u00e6tter du dig ned og indtaster programmet i lommeregneren. Selvf\u00f8lgelig forsvandt programmet, n\u00e5r lommeregneren blev slukket. Udover de koder, jeg selv havde skrevet ned p\u00e5 papir, blev programmer publiceret i magasiner som \"Radio\" og \"Ungdomsteknik\", samt trykt i b\u00f8ger fra den tid.<\/p>\n<p>Den n\u00e6ste modifikation var lommeregneren <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%B8%D0%BA%D0%B0_%D0%9C%D0%9A-52\">\u041c\u041a-52<\/a><\/noindex>, som allerede havde en slags energi-uafh\u00e6ngig datalagring. Nu var det ikke l\u00e6ngere n\u00f8dvendigt at indtaste spillet eller programmet manuelt; efter at have udf\u00f8rt nogle magiske tastetryk blev det indl\u00e6st selv.<\/p>\n<p>St\u00f8rrelsen p\u00e5 det st\u00f8rste program i lommeregneren var 105 trin, og den permanente hukommelsesst\u00f8rrelse i \u041c\u041a-52 var 512 trin.<\/p>\n<p>Forresten, hvis der er fans af disse lommeregnere, der l\u00e6ser denne artikel - under skrivningen af artiklen fandt jeg b\u00e5de en emulator af lommeregneren til Android og programmer til den. Fremad, tilbage i tiden!<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.cax.pmk.ext\">Emulatoren af \u041c\u041a-61 til Android<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/xvadim.github.io\/xbasoft\/pmk\/pmk.html\">Programkatalog for MK-61<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p><b>En lille afstikker om MK-52<\/b> <i>(fra Wikipedia)<\/i><\/p>\n<p>MK-52 fl\u00f8j ind i rummet med skibet \"Soyuz TM-7\". Den blev p\u00e5t\u00e6nkt til brug i beregningen af landingsbane i tilf\u00e6lde af, at det bordcomputer svigtede.<\/p>\n<p>MK-52 med hukommelsesudvidelsesblok \"Elektronika-Astro\" blev fra 1988 leveret til skibene i fl\u00e5den som en del af navigatorens beregningskompleks. <\/p><\/blockquote>\n<h2>De f\u00f8rste personlige computere<\/h2>\n<p><img decoding=\"async\" alt=\"Udviklingen af leveringsmetoder, eller overvejelser om Docker, deb, jar og andet\" src=\"\/wp-content\/uploads\/2019\/03\/5d443c3919023854c53c83ac2265cea3.jpg\" style=\"display:block;margin: 0 auto;\" \/> Lad os vende tilbage til tiderne <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%91%D0%9A_(%D1%81%D0%B5%D0%BC%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%BE_%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BE%D0%B2)\">BK-0010<\/a><\/noindex>. Det er tydeligt, at der ogs\u00e5 var mere hukommelse, og at det slet ikke var en mulighed at indtaste koden fra papiret (selvom jeg i starten gjorde det, fordi der simpelthen ikke var noget andet medie). Det prim\u00e6re middel til opbevaring og distribution af software blev b\u00e5ndoptagere.<\/p>\n<p><br clear=\"all\"><br \/>\n<br clear=\"all\"><br \/>\n<img decoding=\"async\" alt=\"Udviklingen af leveringsmetoder, eller overvejelser om Docker, deb, jar og andet\" src=\"\/wp-content\/uploads\/2019\/03\/988316eac02a95a16e15502a826f0653.jpg\" style=\"display:block;margin: 0 auto;\" \/>Opbevaring p\u00e5 b\u00e5nd var typisk i form af en eller to bin\u00e6re filer, alt andet var indeni. P\u00e5lideligheden var meget lav, s\u00e5 man m\u00e5tte have 2-3 kopier af programmet. Indl\u00e6sningstiden var heller ikke tilfredsstillende, entusiaster eksperimenterede med forskellige frekvenskodninger for at overvinde disse ulemper. Jeg selv besk\u00e6ftigede mig ikke professionelt med softwareudvikling p\u00e5 det tidspunkt (bortset fra simple programmer i BASIC), s\u00e5 jeg kan desv\u00e6rre ikke fort\u00e6lle i detaljer, hvordan alt inden i var ordnet. Det faktum, at computeren kun havde RAM, bestemte stort set enkeltheden i dataopbevaringssystemet.<\/p>\n<h2>Fremkomsten af p\u00e5lidelige og store lagermedier<\/h2>\n<p>\nSenere kom der disketter, hvilket forenklede kopieringsprocessen og \u00f8gede p\u00e5lideligheden.<br \/>\nMen situationen \u00e6ndrede sig radikalt, kun n\u00e5r der kom tilstr\u00e6kkeligt store lokale lagre i form af HDD.<\/p>\n<p>Principielt \u00e6ndrer typen af leverancer sig: der kommer installationsprogrammer, der styrer konfigureringsprocessen af systemet samt oprydning efter sletning, da programmer ikke bare l\u00e6ses ind i hukommelsen, men allerede kopieres til det lokale lager, fra hvilket man ogs\u00e5 skal kunne rydde op i un\u00f8dvendige filer ved behov.<\/p>\n<p>Samtidig \u00f8ges kompleksiteten af det leverede software.<br \/>\nAntallet af filer i leverancen stiger fra enheder til hundreder og tusinder, og der opst\u00e5r konflikt med versionsbiblioteker og andre gl\u00e6der, n\u00e5r forskellige programmer bruger de samme data.<\/p>\n<p><img decoding=\"async\" alt=\"Udviklingen af leveringsmetoder, eller overvejelser om Docker, deb, jar og andet\" src=\"\/wp-content\/uploads\/2019\/03\/48af8fca591a1061df45cd619854a59a.jpg\" style=\"display:block;margin: 0 auto;\" \/> I de dage var Linux stadig en ukendt verden for mig; jeg levede i MS DOS og senere Windows, og skrev i Borland Pascal og Delphi, mens jeg lejlighedsvis kiggede i retning af C++. For at levere produkter brugte mange InstallShield. <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/InstallShield\">ru.wikipedia.org\/wiki\/InstallShield<\/a><\/noindex>, som meget effektivt l\u00f8ste alle opgaver inden for udrulning og konfiguration af software.<\/p>\n<p><br clear=\"all\"><br \/>\n<br clear=\"all\"><\/p>\n<h2>Internettets \u00e6ra<\/h2>\n<p>\nKompleksiteten af program.Systemer bliver gradvist mere komplicerede; overgangen fra monolitiske og desktop-applikationer til distribuerede systemer, tynde klienter og mikrotjenester finder sted. Nu er det ikke kun \u00e9n applikation, der skal konfigureres, men en hel samling, og de skal fungere sammen.<\/p>\n<p>Konceptet har \u00e6ndret sig fuldst\u00e6ndigt; Internettet kom, og \u00e6raen for cloud-tjenester indtraf. P\u00e5 det tidspunkt var det stadig kun i sin sp\u00e6de fase, som websites, og der var ikke mange, der dr\u00f8mte om tjenester, men det var et vendepunkt i branchen b\u00e5de for udvikling og for levering af applikationer.<\/p>\n<p>Jeg bem\u00e6rkede, at der p\u00e5 dette tidspunkt skete et generationsskifte blandt udviklere (eller var det kun i mit milj\u00f8), og der var en f\u00f8lelse af, at alle de gamle gode leveringsmetoder pludselig blev glemt, og alt blev startet forfra: hele leveringsprocessen blev udf\u00f8rt med skripter, og det blev stolt kaldt \"Continuous delivery\". Faktisk begyndte der en periode med en form for kaos, hvor det gamle blev glemt og ikke brugt, og der simpelthen ikke var noget nyt.<\/p>\n<p>Jeg husker tiderne, da vi i den virksomhed, hvor jeg arbejdede dengang (jeg vil ikke n\u00e6vne navnet), i stedet for at lave en bygning gennem ant (maven var dengang ikke popul\u00e6r eller eksisterede slet ikke), ganske enkelt samlede jar-filen i IDE'en og roligt committede den til SVN. Udrulningen bestod derfor blot i at hente filen fra SVN og kopiere den via SSH til den rigtige maskine. S\u00e5 enkelt og rudiment\u00e6rt.<\/p>\n<p>P\u00e5 samme tid blev levering af simple websites p\u00e5 PHP udf\u00f8rt p\u00e5 en overordentlig primitiv m\u00e5de ved blot at kopiere den rettede fil gennem FTP til den m\u00e5lrettede maskine. Nogle gange var det ikke engang n\u00f8dvendigt; koden blev redigeret direkte p\u00e5 produktionsserveren, og det var en s\u00e6rlig luksus, hvis der var nogen backups.<\/p>\n<p><br clear=\"all\"><\/p>\n<h4>RPM- og DEB-pakker<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Udviklingen af leveringsmetoder, eller overvejelser om Docker, deb, jar og andet\" src=\"\/wp-content\/uploads\/2019\/03\/8590e7db6c67cad4b97654465ba5e946.jpg\" style=\"display:block;margin: 0 auto;\" \/>P\u00e5 den anden side, med udviklingen af internettet er UNIX-lignende systemer blevet stadig mere popul\u00e6re, is\u00e6r i den periode opdagede jeg RedHat Linux 6, omkring \u00e5r 2000. Naturligvis var der ogs\u00e5 visse v\u00e6rkt\u00f8jer til distribution af software, if\u00f8lge Wikipedia blev RPM som den prim\u00e6re paketchef introduceret allerede i 1995 med versionen RedHat Linux 2.0. Og lige siden da er systemet blevet leveret i form af RPM-pakker og eksisterer og udvikler sig ganske succesfuldt.<\/p>\n<p>Debian-familien har taget en lignende vej og implementeret levering i form af deb-pakker, hvilket ogs\u00e5 ubestridt er tilf\u00e6ldet den dag i dag.<\/p>\n<p>Paketchefer g\u00f8r det muligt at levere selve softwareprodukterne, konfigurere dem under installationsprocessen, styre afh\u00e6ngighederne mellem forskellige pakker, udf\u00f8re fjernelse af produkter og reng\u00f8re det overfl\u00f8dige under afinstallationen. Det vil sige, at det i h\u00f8j grad er alt, hvad der er brug for, og netop derfor har de overlevet i flere \u00e5rtier n\u00e6sten uden \u00e6ndringer.<\/p>\n<p>Skyteknologi har tilf\u00f8jet installation af pakker ikke kun fra fysiske medier, men ogs\u00e5 fra cloud-repositorier, men principielt er der sket meget lidt \u00e6ndringer.<\/p>\n<p>Det er v\u00e6rd at bem\u00e6rke, at der i \u00f8jeblikket er visse tendenser til at bev\u00e6ge sig v\u00e6k fra deb og over til snap-pakker, men mere om det senere.<\/p>\n<p>S\u00e5 denne nye generation af cloud-udviklere, som ikke kendte til hverken DEB eller RPM, voksede stille og roligt, fik erfaring, produkterne blev mere komplekse, og der var behov for mere fornuftige leveringsmetoder end FTP, bash-scripts og lignende studenterprojekter. <br \/>\nOg her tr\u00e6der Docker ind p\u00e5 scenen, en slags blanding af virtualisering, ressourceafgr\u00e6nsning og leveringsmetode. Det er moderne og ungdommeligt nu, men er det n\u00f8dvendigt for alting? Er det en panacea?<\/p>\n<p>Efter min observation bliver Docker ofte pr\u00e6senteret ikke som et fornuftigt valg, men blot fordi det, p\u00e5 den ene side, diskuteres i samfundet, og de, der tilbyder det, kun kender det. P\u00e5 den anden side er der stort set ikke nogen tale om de gode, gamle pakkesystemer - de findes stadig og g\u00f8r deres arbejde stille og ubem\u00e6rket. I en s\u00e5dan situation er der ikke meget valg - valget er oplagt - Docker.<\/p>\n<p>Jeg vil fors\u00f8ge at dele erfaringer om, hvordan vores implementering af Docker gik, og hvad resultatet blev.<\/p>\n<p><br clear=\"all\"><\/p>\n<h4>Hjemmelavede scripts<\/h4>\n<p>\nOprindeligt var der bash-scripts, der deployede jar-arkiver p\u00e5 de n\u00f8dvendige maskiner. Dette proces blev styret af Jenkins. Det fungerede godt, da selve jar-arkivet allerede er et byggeri, der indeholder klasser, ressourcer og endda konfiguration. Hvis man maksimerer indholdet, s\u00e5 er det ikke s\u00e5 sv\u00e6rt at pakke det ud med et script.<\/p>\n<p>Men scripts har flere ulemper:<\/p>\n<ul>\n<li> Scripts skrives ofte i hast og er derfor s\u00e5 primitive, at de kun indeholder det mest optimale scenarie. Dette skyldes, at udvikleren er interesseret i hurtig levering, mens et ordentligt script kr\u00e6ver en betydelig m\u00e6ngde ressourcer.<\/li>\n<li> Som konsekvens af det foreg\u00e5ende punkt indeholder scripts ikke afinstallationsprocedurer.<\/li>\n<li> Der er ingen etableret opgraderingsprocedure.<\/li>\n<li> N\u00e5r der kommer et nyt produkt, skal der skrives et nyt script.<\/li>\n<li> Der er ingen afh\u00e6ngighedsst\u00f8tte.<\/li>\n<\/ul>\n<p>\nSelvf\u00f8lgelig kan man skrive et avanceret script, men som jeg n\u00e6vnte tidligere, kr\u00e6ver det tid til udvikling, og som bekendt er tid altid en mangelvare.<\/p>\n<p>Dette begr\u00e6nser tydeligt anvendelsesomr\u00e5det for denne udviklingsmetode til kun de simpleste systemer. Det er tid til at \u00e6ndre det.<\/p>\n<p><br clear=\"all\"><\/p>\n<h4>Docker<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Udviklingen af leveringsmetoder, eller overvejelser om Docker, deb, jar og andet\" src=\"\/wp-content\/uploads\/2019\/03\/f9c6180a2775513ce88c5425727817d1.jpg\" style=\"display:block;margin: 0 auto;\" \/>I et bestemt \u00f8jeblik begyndte nyuddannede mid-levels at komme til os, sprudlende med ideer og dr\u00f8mmende om Docker. Hvad skal der til? Flaget i h\u00e5nden \u2013 lad os g\u00f8re det! Der var to fors\u00f8g. Begge mislykkedes \u2013 lad os sige det s\u00e5dan, p\u00e5 grund af store ambitioner, men utilstr\u00e6kkelig faktisk erfaring. Skulle vi tvinge det igennem og f\u00e6rdigg\u00f8re det med alle midler? Sandsynligvis ikke \u2013 kollektivet skal evolution\u00e6rt vokse til det rette niveau, f\u00f8r det kan bruge de relevante v\u00e6rkt\u00f8jer. Desuden, n\u00e5r vi brugte f\u00e6rdige Docker-billeder, st\u00f8dte vi ofte p\u00e5 problemer med netv\u00e6rket (som m\u00e5ske ogs\u00e5 var relateret til umodenheden af selve Docker) eller havde sv\u00e6rt ved at udvide andres containere.<\/p>\n<p>Hvilke ulemper st\u00f8dte vi p\u00e5?<\/p>\n<ul>\n<li> Netv\u00e6rksproblemer i bridge-tilstand.<\/li>\n<li> Det er besv\u00e6rligt at se logs i containeren (hvis de ikke er udskilt separat i v\u00e6rtens filsystem).<\/li>\n<li> Periodisk m\u00e6rkelig h\u00e6ngning af ElasticSearch inde i containeren, \u00e5rsagen blev aldrig fundet, det var en officiel container.<\/li>\n<li> Det er ubelejligt at bruge shell inde i containeren \u2013 alt er meget begr\u00e6nset, og der mangler de s\u00e6dvanlige v\u00e6rkt\u00f8jer.<\/li>\n<li> Storede containere i stor st\u00f8rrelse koster meget at opbevare<\/li>\n<li> P\u00e5 grund af den store st\u00f8rrelse af containere er det vanskeligt at underst\u00f8tte flere versioner<\/li>\n<li> L\u00e6ngere opbygning sammenlignet med andre metoder (scripts eller deb-pakker)<\/li>\n<\/ul>\n<p>\nP\u00e5 den anden side, hvad g\u00f8r Spring-service som jar-arkiv v\u00e6rre at deployere via deb? Er ressourceisolation virkelig n\u00f8dvendig? Skal vi miste de praktiske v\u00e6rkt\u00f8jer fra operativsystemet ved at propppe servicen ind i en st\u00e6rkt begr\u00e6nset container?<\/p>\n<p>Praksis har vist, at det i virkeligheden ikke er n\u00f8dvendigt; deb-pakker er tilstr\u00e6kkelige i 90% af tilf\u00e6ldene.<\/p>\n<p>Hvorn\u00e5r virker den gode, gamle deb ikke, og hvorn\u00e5r har vi faktisk brug for Docker?<\/p>\n<p>For os var det deployment af tjenester i Python. Mange biblioteker, der var n\u00f8dvendige til maskinl\u00e6ring og ikke tilg\u00e6ngelige i standardudgaven af operativsystemet (og det, der var der, var ikke de rigtige versioner), hacks med indstillinger, behov for forskellige versioner til forskellige tjenester der k\u00f8rer p\u00e5 det samme v\u00e6rtssystem, f\u00f8rte til, at den eneste fornuftige m\u00e5de at levere denne kerneblanding p\u00e5 var Docker. Arbejdsbyrden med at bygge Docker-containeren viste sig at v\u00e6re lavere end ideen om at pakke det hele ind i separate deb-pakker med afh\u00e6ngigheder; \u00e6rligt talt ville ingen ved det sunde fornuft overhovedet have kastet sig over det.<\/p>\n<p>Det andet aspekt, hvor Docker planl\u00e6gges brugt, er til deployment af tjenester via blue-green deploy. Men her \u00f8nsker man en gradvis stigning i kompleksitet: f\u00f8rst opbygges deb-pakker, og s\u00e5 bygges Docker-containeren ud fra dem.<\/p>\n<p><br clear=\"all\"><\/p>\n<h4>Snap-pakker<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Udviklingen af leveringsmetoder, eller overvejelser om Docker, deb, jar og andet\" src=\"\/wp-content\/uploads\/2019\/03\/8c9001b28757f8427c85e54bca5b4e73.jpg\" style=\"display:block;margin: 0 auto;\" \/> Lad os vende tilbage til snap-pakker. De dukkede f\u00f8rste gang op officielt i Ubuntu 16.04. I mods\u00e6tning til de velkendte deb-pakker og rpm-pakker, b\u00e6rer snap alle afh\u00e6ngigheder i sig. P\u00e5 den ene side undg\u00e5r dette biblioteks konflikter, men p\u00e5 den anden side medf\u00f8rer det st\u00f8rre st\u00f8rrelser p\u00e5 den resulterende pakke. Derudover kan det ogs\u00e5 p\u00e5virke systemets sikkerhed: I tilf\u00e6lde af snap-levering skal udvikleren, der opretter pakken, selv holde styr p\u00e5 alle \u00e6ndringer af de inkluderede biblioteker. Samlet set er det ikke s\u00e5 entydigt, og det universelle lykke ved deres brug indtr\u00e6ffer ikke. Men ikke desto mindre er det en rimelig alternativ, if\u00f8lge hvilken Docker kun bruges som et emballeringsmiddel og ikke til virtualisering.<\/p>\n<p><br clear=\"all\"><br \/>\nSom resultat bruger vi nu en fornuftig kombination af b\u00e5de deb-pakker og Docker-containere, som vi muligvis i enkelte tilf\u00e6lde vil erstatte med snap-pakker.<\/p>\n<p class=\"for_users_only_msg\">Kun registrerede brugere kan deltage i unders\u00f8gelsen. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Log ind<\/a><\/noindex>, please.<\/p>\n<h2 class=\"default-block__polling-title\">Hvad bruger I til distribution?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Hjemmelavede scripts<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Vi kopierer manuelt til FTP.<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    deb-pakker<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    rpm-pakker<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    snap-pakker<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Docker-billeder<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Virtuelle maskinbilleder<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Vi kloner hele HDD'en.<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    puppet<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    ansible<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Andet<\/p>\n<\/li>\n<\/ul>\n<p>    109 brugere har stemt. 32 brugere har afholdt sig.<\/p>\n<p>Kilde: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/srg\/blog\/444102\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041a\u0430\u043a-\u0442\u043e \u0432 \u043e\u0434\u0438\u043d \u043c\u043e\u043c\u0435\u043d\u0442 \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e \u043f\u0440\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0443 \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0434\u043e\u043a\u0435\u0440 \u0438 deb-\u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0447\u0430\u043b, \u043c\u0435\u043d\u044f \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043f\u043e\u043d\u0435\u0441\u043b\u043e \u0432 \u0434\u0430\u043b\u0435\u043a\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0445 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u0432 \u0438 \u0434\u0430\u0436\u0435 \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440\u043e\u0432. \u0412 \u043e\u0431\u0449\u0435\u043c, \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u0443\u0445\u0438\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0439 \u0434\u043e\u043a\u0435\u0440\u0430 \u0438 deb \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u0435 \u0432\u043e\u0442 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u0442\u0435\u043c\u0443 \u044d\u0432\u043e\u043b\u044e\u0446\u0438\u0438, \u043a\u043e\u0438 \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u043d\u0430 \u0412\u0430\u0448 \u0441\u0443\u0434. \u041b\u044e\u0431\u043e\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-42175","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041a\u0430\u043a-\u0442\u043e \u0432 \u043e\u0434\u0438\u043d \u043c\u043e\u043c\u0435\u043d\u0442.\" \/>\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\/da\/blog\/administrirovanie\/evolyutsiya-sredstv-postavki-ili-razmyshleniya-o-docker-deb-jar-i-prochem\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\u042d\u0432\u043e\u043b\u044e\u0446\u0438\u044f \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0438, \u0438\u043b\u0438 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u044f \u043e Docker, deb, jar \u0438 \u043f\u0440\u043e\u0447\u0435\u043c | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041a\u0430\u043a-\u0442\u043e \u0432 \u043e\u0434\u0438\u043d \u043c\u043e\u043c\u0435\u043d\u0442.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/evolyutsiya-sredstv-postavki-ili-razmyshleniya-o-docker-deb-jar-i-prochem\" \/>\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-03-17T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T10:45:00+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\udd47Evolutionen af distributionsv\u00e6rkt\u00f8jer, eller tanker om Docker, deb, jar og mere | ProHoster","description":"P\u00e5 et tidspunkt.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/evolyutsiya-sredstv-postavki-ili-razmyshleniya-o-docker-deb-jar-i-prochem","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\u042d\u0432\u043e\u043b\u044e\u0446\u0438\u044f \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0438, \u0438\u043b\u0438 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u044f \u043e Docker, deb, jar \u0438 \u043f\u0440\u043e\u0447\u0435\u043c | ProHoster","og:description":"\u041a\u0430\u043a-\u0442\u043e \u0432 \u043e\u0434\u0438\u043d \u043c\u043e\u043c\u0435\u043d\u0442.","og:url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/evolyutsiya-sredstv-postavki-ili-razmyshleniya-o-docker-deb-jar-i-prochem","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-03-17T21:00:00+00:00","article:modified_time":"2020-02-18T10:45:00+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"42175","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-22 07:30:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:04:29","updated":"2026-01-22 07:30:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/42175","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=42175"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/42175\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=42175"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=42175"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=42175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}