{"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\/sv\/blog\/administrirovanie\/evolyutsiya-sredstv-postavki-ili-razmyshleniya-o-docker-deb-jar-i-prochem","title":{"rendered":"Evolution of Delivery Methods, or Reflections on Docker, deb, jar, and More","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Evolution of Delivery Methods, or Reflections on Docker, deb, jar, and More\" src=\"\/wp-content\/uploads\/2019\/03\/3c677d0628824497039901c0179a8749.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAt one point, I decided to write an article about delivery in the form of Docker containers and deb packages, but when I started, I somehow drifted back to the distant times of the first personal computers and even calculators. In general, instead of dry comparisons between Docker and deb, I ended up with these reflections on the topic of evolution, which I present for your consideration.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nAny product, no matter what it is, must somehow reach the product servers, be configured, and launched. This is what this article will be about.<\/p>\n<p>I will reflect in a historical context, 'what I see, I sing about', what I saw when I first started writing code and what I observe now, what we ourselves are using at the moment and why. The article does not claim to be a comprehensive study; some moments are omitted; this is my personal view of what was and what exists now.<\/p>\n<p>So, in the good old days\u2026 the earliest method of delivery I experienced was cassette tapes from tape recorders. I had a BK-0010.01 computer...<\/p>\n<h2>The Era of Calculators<\/h2>\n<p>\nNo, there was an even earlier moment; there was a calculator. <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\">MK-61<\/a><\/noindex> och <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\">MK-52<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"Evolution of Delivery Methods, or Reflections on Docker, deb, jar, and More\" src=\"\/wp-content\/uploads\/2019\/03\/ea68507cd83b4da3038cea7329ff1813.jpg\" style=\"display:block;margin: 0 auto;\" \/> So, when I had <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\">MK-61<\/a><\/noindex>, the method of transferring a program was an ordinary sheet of graph paper, on which the program was recorded, and when it was necessary to launch it, it was manually entered into the calculator. If you wanted to play (yes, yes, even on this ancient calculator there were games) \u2014 you would sit down and input the program into the calculator. Naturally, when the calculator was turned off, the program vanished into oblivion. Besides the codes manually written on paper, programs were published in the magazines 'Radio' and 'Youth Technology', and also printed in books of that time.<\/p>\n<p>The next modification was the calculator <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\">MK-52<\/a><\/noindex>, which already had some semblance of non-volatile data storage. Now there was no need to manually input the game or program; after making some magical passes with the buttons, it loaded itself.<\/p>\n<p>The largest program in the calculator was 105 steps, and the size of the permanent memory in the MK-52 was 512 steps.<\/p>\n<p>F\u00f6rresten, om det finns n\u00e5gra fans av dessa kalkylatorer som l\u00e4ser denna artikel \u2014 n\u00e4r jag skrev artikeln hittade jag en emulator f\u00f6r kalkylatorn f\u00f6r Android och program f\u00f6r den. Fram\u00e5t, till det f\u00f6rflutna!<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.cax.pmk.ext\">Emulator MK-61 f\u00f6r Android<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/xvadim.github.io\/xbasoft\/pmk\/pmk.html\">Programkatalog f\u00f6r MK-61<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p><b>En liten avstickare om MK-52<\/b> <i>(fr\u00e5n Wikipedia)<\/i><\/p>\n<p>MK-52 fl\u00f6g i rymden p\u00e5 rymdskeppet \"Soyuz TM-7\". Det var t\u00e4nkt att anv\u00e4ndas f\u00f6r att ber\u00e4kna landningsbanan om omborddatorn skulle g\u00e5 s\u00f6nder.<\/p>\n<p>MK-52 med minnesexpansionsenheten \"Elektronika-Astro\" b\u00f6rjade levereras till flottans fartyg som en del av ett navigationsber\u00e4kningssystem fr\u00e5n 1988. <\/p><\/blockquote>\n<h2>De f\u00f6rsta persondatorerna<\/h2>\n<p><img decoding=\"async\" alt=\"Evolution of Delivery Methods, or Reflections on Docker, deb, jar, and More\" src=\"\/wp-content\/uploads\/2019\/03\/5d443c3919023854c53c83ac2265cea3.jpg\" style=\"display:block;margin: 0 auto;\" \/> L\u00e5t oss \u00e5terv\u00e4nda till tiderna <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 \u00e4r f\u00f6rst\u00e5eligt att det ocks\u00e5 blev mer minne, och att skriva in kod fr\u00e5n papper var verkligen inte ett alternativ l\u00e4ngre (\u00e4ven om jag i b\u00f6rjan gjorde just det, eftersom det inte fanns n\u00e5gon annan lagringsmetod). Huvudmedlet f\u00f6r lagring och distribution av programvara blev ljudkassetter f\u00f6r kassettbandspelare.<\/p>\n<p><br clear=\"all\"><br \/>\n<br clear=\"all\"><br \/>\n<img decoding=\"async\" alt=\"Evolution of Delivery Methods, or Reflections on Docker, deb, jar, and More\" src=\"\/wp-content\/uploads\/2019\/03\/988316eac02a95a16e15502a826f0653.jpg\" style=\"display:block;margin: 0 auto;\" \/>Lagring p\u00e5 kassett var vanligtvis i form av en eller tv\u00e5 bin\u00e4ra filer, allt annat fanns internt. Tillf\u00f6rlitligheten var mycket l\u00e5g, man var tvungen att ha 2-3 kopior av programmet. Laddningstiden var inte heller s\u00e4rskilt tillfredsst\u00e4llande; entusiaster experimenterade med olika frekvenskodningar f\u00f6r att bek\u00e4mpa dessa brister. Jag sysslade sj\u00e4lv inte med professionell mjukvaruutveckling vid den tiden (f\u00f6rutom n\u00e5gra enkla program i Basic), s\u00e5 jag kan tyv\u00e4rr inte ber\u00e4tta i detalj hur allt var uppbyggt internt. Den enda faktorn att datorn hade endast RAM minnesm\u00e4ssigt definierade till stor del enkelheten i datalagringsschemat.<\/p>\n<h2>Framv\u00e4xten av p\u00e5litliga och stora informationslagringar<\/h2>\n<p>\nSenare kom disketter, vilket f\u00f6renklade kopieringsprocessen och \u00f6kade tillf\u00f6rlitligheten.<br \/>\nMen situationen f\u00f6r\u00e4ndras radikalt f\u00f6rst n\u00e4r tillr\u00e4ckligt stora lokala lagringsenheter i form av HDD blir tillg\u00e4ngliga.<\/p>\n<p>Typen av distribution f\u00f6r\u00e4ndras principiellt: installationsprogram dyker upp som hanterar systemkonfigurationsprocessen och st\u00e4dning efter borttagning, eftersom program inte bara l\u00e4ses in i minnet, utan kopieras redan till den lokala lagringsenheten, fr\u00e5n vilken man ocks\u00e5 m\u00e5ste kunna rensa bort det som inte l\u00e4ngre beh\u00f6vs.<\/p>\n<p>Samtidigt \u00f6kar komplexiteten hos den levererade programvaran.<br \/>\nAntalet filer i leveransen \u00f6kar fr\u00e5n en till hundratals och tusentals, vilket leder till versionskonflikter av bibliotek och andra gl\u00e4dje\u00e4mnen n\u00e4r olika program anv\u00e4nder samma data.<\/p>\n<p><img decoding=\"async\" alt=\"Evolution of Delivery Methods, or Reflections on Docker, deb, jar, and More\" src=\"\/wp-content\/uploads\/2019\/03\/48af8fca591a1061df45cd619854a59a.jpg\" style=\"display:block;margin: 0 auto;\" \/> P\u00e5 den tiden var jag fortfarande inte medveten om linuxexistensen, jag levde i en v\u00e4rld av MS DOS och senare Windows, och jag programmerade p\u00e5 Borland Pascal och Delphi, ibland tittade jag mot C++. F\u00f6r att leverera produkter anv\u00e4nde m\u00e5nga InstallShield. <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/InstallShield\">ru.wikipedia.org\/wiki\/InstallShield<\/a><\/noindex>, som framg\u00e5ngsrikt l\u00f6ste alla uppsatta m\u00e5l f\u00f6r deployment och konfiguration av mjukvara.<\/p>\n<p><br clear=\"all\"><br \/>\n<br clear=\"all\"><\/p>\n<h2>Internetepoken<\/h2>\n<p>\nAllt eftersom kompliciteten i programvarusystemen \u00f6kade, \u00f6vergick man fr\u00e5n monolitiska och skrivbordsapplikationer till distribuerade system, tunn klient och mikrotj\u00e4nster. Nu beh\u00f6vde man konfigurera inte bara ett program utan en upps\u00e4ttning av dem, och de m\u00e5ste alla fungera bra tillsammans.<\/p>\n<p>Konceptet f\u00f6r\u00e4ndrades helt, Internet kom och en era av molntj\u00e4nster b\u00f6rjade. \u00c4ven om det fortfarande bara var i ett tidigt skede, i form av webbplatser, dr\u00f6mde ingen riktigt om tj\u00e4nster, men detta var en v\u00e4ndpunkt i industrin b\u00e5de f\u00f6r utveckling och leverans av applikationer.<\/p>\n<p>Jag la m\u00e4rke till att vid denna tidpunkt skedde en generationsv\u00e4xling bland utvecklarna (eller var det bara i min omgivning), och det k\u00e4ndes som att alla gamla goda s\u00e4tt att leverera hade gl\u00f6mts bort p\u00e5 en g\u00e5ng och allt b\u00f6rjade om fr\u00e5n b\u00f6rjan: all leverans b\u00f6rjade g\u00f6ras med skript skrivna p\u00e5 kn\u00e4et, och man kallade det stolt \"Continuous Delivery\". I praktiken b\u00f6rjade en period av r\u00f6rig ordning, d\u00e4r det gamla var bortgl\u00f6mt och inte anv\u00e4ndes, medan det nya helt enkelt inte fanns.<\/p>\n<p>Jag minns tiderna n\u00e4r vi i f\u00f6retaget d\u00e4r jag d\u00e5 arbetade (jag kommer inte n\u00e4mna namnet) ist\u00e4llet f\u00f6r att bygga genom ant (maven var d\u00e5 fortfarande inte popul\u00e4r eller fanns \u00f6verhuvudtaget), samlade folk bara jar-filen i IDE och tryggt committade den i SVN. F\u00f6ljaktligen bestod leveransen av att h\u00e4mta filen fr\u00e5n SVN och kopiera den via SSH till r\u00e4tt maskin. S\u00e5 enkelt och primitivt.<\/p>\n<p>Samtidigt gjorde leveransen av enkla webbplatser p\u00e5 PHPs just det \u2013 en mycket primitiv kopiering av den korrigerade filen via FTP till m\u00e5maskinen. Ibland fanns det inte ens s\u00e5dant \u2013 koden \u00e4ndrades direkt p\u00e5 produktionsservern, och det var s\u00e4rskilt lyxigt om det fanns n\u00e5gra backupkopior n\u00e5gonstans.<\/p>\n<p><br clear=\"all\"><\/p>\n<h4>RPM- och DEB-paket<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Evolution of Delivery Methods, or Reflections on Docker, deb, jar, and More\" src=\"\/wp-content\/uploads\/2019\/03\/8590e7db6c67cad4b97654465ba5e946.jpg\" style=\"display:block;margin: 0 auto;\" \/>\u00c5 andra sidan, med internets utveckling har UNIX-liknande system blivit alltmer popul\u00e4ra, s\u00e4rskilt just vid den tiden uppt\u00e4ckte jag RedHat Linux 6, omkring \u00e5r 2000. Det \u00e4r sj\u00e4lvklart att det \u00e4ven d\u00e4r fanns verktyg f\u00f6r mjukvaruleverans, enligt Wikipedia upptr\u00e4dde RPM som den huvudsakliga paketadministrat\u00f6ren redan 1995, i version 2.0 av RedHat Linux. Och sedan dess har systemet levererats i form av RPM-paket och existensen har varit framg\u00e5ngsrik och i utveckling.<\/p>\n<p>Debian-familjens distributioner har g\u00e5tt en liknande v\u00e4g och implementerat mjukvaruleverans i form av deb-paket, vilket ocks\u00e5 har f\u00f6rblivit of\u00f6r\u00e4ndrat fram till idag.<\/p>\n<p>Paketadministrat\u00f6rer g\u00f6r det m\u00f6jligt att leverera sj\u00e4lva programprodukterna, konfigurera dem under installation, hantera beroenden mellan olika paket, utf\u00f6ra borttagning av produkter och st\u00e4da upp \u00f6verfl\u00f6digt under avinstallation. Det vill s\u00e4ga, i stort sett \u00e4r det allt som beh\u00f6vs, och d\u00e4rf\u00f6r har de h\u00e5llit sig i flera decennier n\u00e4stan of\u00f6r\u00e4ndrade.<\/p>\n<p>Molnl\u00f6sningar har lagt till m\u00f6jlighet till installation inte bara fr\u00e5n fysiska lagringsmedia, utan \u00e4ven fr\u00e5n molnarkiv, men prinicipiellt har lite f\u00f6r\u00e4ndrats.<\/p>\n<p>Det b\u00f6r n\u00e4mnas att det f\u00f6r n\u00e4rvarande finns vissa tendenser mot att \u00f6verge deb och \u00f6verg\u00e5 till snap-paket, men mer om det senare.<\/p>\n<p>S\u00e5, detta nya generation av molnutvecklare, som inte k\u00e4nde till vare sig DEB eller RPM, v\u00e4xte ocks\u00e5 sakta, fick erfarenhet, produkterna blev mer komplexa, och det kr\u00e4vdes mer rationella s\u00e4tt att leverera, \u00e4n FTP, bash-skript och liknande studentevenemang. <br \/>\nOch h\u00e4r kommer Docker in i bilden, en slags blandning av virtualisering, resursegregation och leveransmetod. Det \u00e4r nu modernt, ungdomligt, men beh\u00f6vs det f\u00f6r allt? \u00c4r det en universall\u00f6sning?<\/p>\n<p>Enligt mina observationer erbjuds Docker mycket ofta inte som ett rationellt val, utan helt enkelt f\u00f6r att det pratas om det i gemenskapen, och de som erbjuder det k\u00e4nner endast till det. \u00c5 andra sidan \u00e4r de gamla goda paketeringssystemen mestadels tysta \u2014 de finns och g\u00f6r sitt jobb tyst och osynligt. I en s\u00e5dan situation finns det inte mycket val \u2014 valet \u00e4r uppenbart \u2014 Docker.<\/p>\n<p>Jag f\u00f6rs\u00f6ker dela med mig av erfarenheten av hur vi implementerade Docker, och vad resultatet blev.<\/p>\n<p><br clear=\"all\"><\/p>\n<h4>Egenutvecklade skript<\/h4>\n<p>\nI b\u00f6rjan fanns det bash-skript som distribuerade jar-filer till de n\u00f6dv\u00e4ndiga maskinerna. Jenkins hanterade denna process. Det fungerade framg\u00e5ngsrikt, eftersom jar-filen redan \u00e4r en samling som inneh\u00e5ller klasser, resurser och till och med konfiguration. Om man packar allt maximalt i den \u2014 \u00e4r det inte det mest komplicerade att distribuera den med skript.<\/p>\n<p>Men skripten har flera nackdelar:<\/p>\n<ul>\n<li> Skripten skrivs ofta hastigt vilket g\u00f6r dem s\u00e5 primitiva att de bara inneh\u00e5ller det mest gynnsamma scenariot. Detta fr\u00e4mjas av att utvecklaren \u00e4r intresserad av att leverera snabbt, medan ett ordentligt skript kr\u00e4ver investering av en hel del resurser.<\/li>\n<li> Som en f\u00f6ljd av f\u00f6reg\u00e5ende punkt inneh\u00e5ller skripten ingen avinstallationsprocedur.<\/li>\n<li> Det finns ingen etablerad uppgraderingsprocedur.<\/li>\n<li> Vid lanseringen av en ny produkt m\u00e5ste man skriva ett nytt skript.<\/li>\n<li> Det finns inget st\u00f6d f\u00f6r beroenden.<\/li>\n<\/ul>\n<p>\nNaturligtvis kan man skriva ett avancerat skript, men som jag n\u00e4mnde tidigare \u2014 det tar tid att utveckla, och tid \u00e4r alltid en bristvara.<\/p>\n<p>Detta begr\u00e4nsar sj\u00e4lvklart anv\u00e4ndningsomr\u00e5det f\u00f6r denna distributionsmetod till enklaste system. Det \u00e4r dags att \u00e4ndra p\u00e5 detta.<\/p>\n<p><br clear=\"all\"><\/p>\n<h4>Docker<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Evolution of Delivery Methods, or Reflections on Docker, deb, jar, and More\" src=\"\/wp-content\/uploads\/2019\/03\/f9c6180a2775513ce88c5425727817d1.jpg\" style=\"display:block;margin: 0 auto;\" \/>Vid n\u00e5got tillf\u00e4lle b\u00f6rjade nyutbildade mellanliggande utvecklare komma till oss, sprudlande av id\u00e9er och dr\u00f6mmande om Docker. Jaha, l\u00e5t oss g\u00f6ra det! Det gjordes tv\u00e5 f\u00f6rs\u00f6k. B\u00e5da misslyckade \u2014 l\u00e5t oss s\u00e4ga, p\u00e5 grund av stora ambitioner men bristande verklig erfarenhet. Skulle vi tvinga fram och avsluta det med alla medel? Troligtvis inte \u2014 teamet m\u00e5ste v\u00e4xa evolutionsm\u00e4ssigt till r\u00e4tt niv\u00e5 innan det kan anv\u00e4nda r\u00e4tt verktyg. Dessutom, n\u00e4r vi anv\u00e4nde f\u00e4rdiga Docker-bilder, st\u00f6tte vi ofta p\u00e5 problem med n\u00e4tverket (vilket kanske ocks\u00e5 var kopplat till det instabila hos Docker sj\u00e4lv) eller hade sv\u00e5rt att utvidga andras containrar.<\/p>\n<p>Vilka besv\u00e4r st\u00f6tte vi p\u00e5?<\/p>\n<ul>\n<li> N\u00e4tverksproblem i bridge-l\u00e4ge.<\/li>\n<li> Det \u00e4r obekv\u00e4mt att se loggar i containern (om de inte \u00e4r flyttade separat till filsystemet p\u00e5 v\u00e4rdmaskinen).<\/li>\n<li> Periodisk konstig frysnings av ElasticSearch inuti containern, orsaken kunde vi aldrig fastst\u00e4lla, containern \u00e4r officiell.<\/li>\n<li> Det \u00e4r obekv\u00e4mt att anv\u00e4nda shell i containern \u2014 allt \u00e4r kraftigt begr\u00e4nsat, inga bekanta verktyg finns tillg\u00e4ngliga.<\/li>\n<li> Stora storlekar p\u00e5 insamlade containrar \u2013 dyrt att lagra<\/li>\n<li> P\u00e5 grund av stora storlekar p\u00e5 containrar \u00e4r det sv\u00e5rt att st\u00f6dja flera versioner<\/li>\n<li> L\u00e4ngre samlingstid, i motsats till andra metoder (skript eller deb-paket)<\/li>\n<\/ul>\n<p>\n\u00c5 andra sidan, varf\u00f6r skulle en Spring-tj\u00e4nst i form av en jar-arkiv vara s\u00e4mre att distribuera via samma deb? \u00c4r resursisolering verkligen n\u00f6dv\u00e4ndig? Ska man avst\u00e5 fr\u00e5n bekv\u00e4ma verktyg i operativsystemet genom att stoppa tj\u00e4nsten i en kraftigt nedbantad container?<\/p>\n<p>Som erfarenheten visar \u2013 i praktiken \u00e4r det inte n\u00f6dv\u00e4ndigt, deb-paket r\u00e4cker i 90% av fallen.<\/p>\n<p>N\u00e4r fungerar den gamla goda deb \u00e4nd\u00e5 inte och n\u00e4r beh\u00f6vde vi faktiskt Docker?<\/p>\n<p>F\u00f6r oss handlade det om att distribuera tj\u00e4nster p\u00e5 python. M\u00e5nga bibliotek som beh\u00f6vs f\u00f6r maskininl\u00e4rning som saknades i standarddistributionen av operativsystemet (och det som fanns \u2013 var inte i r\u00e4tt version), hack f\u00f6r inst\u00e4llningar, behov av olika versioner f\u00f6r olika tj\u00e4nster som lever p\u00e5 samma v\u00e4rdsystem ledde till att det enda rimliga s\u00e4ttet att leverera denna k\u00e4rnblandning blev Docker. Arbetsinsatsen f\u00f6r att bygga Docker-container var l\u00e4gre \u00e4n tanken att paketera allt detta i separata deb-paket med beroenden, och ingen vid sunda f\u00f6rnuft skulle ens ta sig an det.<\/p>\n<p>Den andra punkten d\u00e4r Docker planeras att anv\u00e4ndas \u2013 f\u00f6r distribution av tj\u00e4nster enligt blue-green deploy-schema. Men h\u00e4r vill man f\u00e5 en gradvis \u00f6kning av komplexiteten: f\u00f6rst samlas deb-paket, och sedan byggs Docker-containern utifr\u00e5n dem.<\/p>\n<p><br clear=\"all\"><\/p>\n<h4>Snap-paket<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Evolution of Delivery Methods, or Reflections on Docker, deb, jar, and More\" src=\"\/wp-content\/uploads\/2019\/03\/8c9001b28757f8427c85e54bca5b4e73.jpg\" style=\"display:block;margin: 0 auto;\" \/> L\u00e5t oss \u00e5terkomma till snap-paketen. De d\u00f6k upp officiellt i Ubuntu 16.04. Till skillnad fr\u00e5n de vanliga deb-paketen och rpm-paketen b\u00e4r snap p\u00e5 alla beroenden. \u00c5 ena sidan undviker detta biblioteks konflikter, \u00e5 andra sidan ger det mer betydande storlekar p\u00e5 det resulterande paketet. Dessutom kan detta p\u00e5verka systemets s\u00e4kerhet: vid leverans av snap m\u00e5ste utvecklaren som skapar paketet h\u00e5lla koll p\u00e5 alla \u00e4ndringar i de inkluderade biblioteken. S\u00e5 det \u00e4r inte helt entydigt och allm\u00e4n lycka med deras anv\u00e4ndning kommer inte automatiskt. Men icke desto mindre \u00e4r det en fullt rimlig alternativ, om samma Docker anv\u00e4nds endast som ett medel f\u00f6r paketering, inte virtualisering.<\/p>\n<p><br clear=\"all\"><br \/>\nSom sammanfattning anv\u00e4nds vi nu i en rimlig kombination b\u00e5de deb-paket och Docker-containrar, som vi eventuellt kommer att byta ut mot snap-paket i vissa fall.<\/p>\n<p class=\"for_users_only_msg\">Endast registrerade anv\u00e4ndare kan delta i omr\u00f6stningen. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Logga in<\/a><\/noindex>, tack.<\/p>\n<h2 class=\"default-block__polling-title\">Vad anv\u00e4nder du f\u00f6r leverans?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Egenutvecklade skript<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Vi kopierar manuellt via FTP.<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    deb-paket<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    rpm-paket<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    snap-paket<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Docker-bilder<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Virtuella maskinbilder<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Vi klonar hela HDD:n.<\/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>                    Annat<\/p>\n<\/li>\n<\/ul>\n<p>    109 anv\u00e4ndare r\u00f6stade. 32 anv\u00e4ndare avstod.<\/p>\n<p>K\u00e4lla: <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.4 - 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\/sv\/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.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\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\/sv\/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\udd47 Utvecklingen av leveransmetoder, eller reflektioner om Docker, deb, jar och annat | ProHoster","description":"Det var n\u00e5gon g\u00e5ng.","canonical_url":"https:\/\/prohoster.info\/sv\/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":"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\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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/42175","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=42175"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/42175\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=42175"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=42175"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=42175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}