{"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\/it\/blog\/administrirovanie\/evolyutsiya-sredstv-postavki-ili-razmyshleniya-o-docker-deb-jar-i-prochem","title":{"rendered":"Evoluzione dei mezzi di distribuzione, o riflessioni su Docker, deb, jar e altro","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Evoluzione dei mezzi di distribuzione, o riflessioni su Docker, deb, jar e altro\" src=\"\/wp-content\/uploads\/2019\/03\/3c677d0628824497039901c0179a8749.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUn momento ho deciso di scrivere un articolo sulla distribuzione tramite container Docker e pacchetti deb, ma quando ho iniziato, mi sono ritrovato a riflettere su tempi lontani dei primi computer personali e persino delle calcolatrici. In sintesi, invece di aride comparazioni tra Docker e deb, ecco alcune considerazioni sull'evoluzione che vi presento per il vostro giudizio.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nQualsiasi prodotto, qualunque esso sia, deve in qualche modo arrivare ai server produttivi, deve essere configurato e avviato. Di questo parler\u00e0 questo articolo.<\/p>\n<p>Rifletter\u00f2 nel contesto storico, \u00abquello che vedo \u2014 di questo canto\u00bb, ci\u00f2 che ho visto quando ho iniziato a scrivere codice e ci\u00f2 che osservo ora, cosa utilizziamo attualmente e perch\u00e9. L'articolo non ambisce a essere una ricerca completa, alcuni aspetti sono trascurati, \u00e8 il mio punto di vista personale su ci\u00f2 che c'era e ci\u00f2 che c'\u00e8 adesso.<\/p>\n<p>Quindi, nei bei tempi di una volta\u2026 il primo modo di distribuzione che ho conosciuto erano le cassette dei registratori. Avevo un computer BK-0010.01\u2026<\/p>\n<h2>L'era delle calcolatrici<\/h2>\n<p>\nNo, c'era un momento ancora pi\u00f9 antico, c'era ancora la calcolatrice <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> e <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=\"Evoluzione dei mezzi di distribuzione, o riflessioni su Docker, deb, jar e altro\" src=\"\/wp-content\/uploads\/2019\/03\/ea68507cd83b4da3038cea7329ff1813.jpg\" style=\"display:block;margin: 0 auto;\" \/> Quindi, quando avevo <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>, il metodo per trasferire il programma era un semplice foglio di carta a quadretti, su cui era scritto il programma che, se necessario, veniva inserito manualmente nel calcolatore. Vuoi giocare (s\u00ec, anche su questo calcolatore preistorico c'erano giochi) \u2014 ti siedi e digiti il programma nel calcolatore. Naturalmente, quando il calcolatore \u00e8 spento, il programma scompare. Oltre ai codici scritti a mano sul foglio, i programmi venivano pubblicati nelle riviste \u00abRadio\u00bb e \u00abTecnica della giovent\u00f9\u00bb, e stampati anche nei libri dell'epoca.<\/p>\n<p>La modifica successiva \u00e8 stata il calcolatore <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>, che aveva gi\u00e0 qualche forma di memoria non volatile. Ora non era pi\u00f9 necessario inserire manualmente il gioco o il programma, ma, facendo alcuni passaggi magici con i tasti, si caricava automaticamente.<\/p>\n<p>Il volume del programma pi\u00f9 grande nel calcolatore era di 105 passi, mentre la dimensione della memoria permanente nel MK-52 era di 512 passi.<\/p>\n<p>A proposito, se ci sono fan di questi calcolatori che leggono questo articolo \u2014 mentre scrivevo l'articolo ho trovato un emulatore di calcolatore per Android e programmi per esso. Avanti, verso il passato!<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.cax.pmk.ext\">Emulatore MK-61 per Android<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/xvadim.github.io\/xbasoft\/pmk\/pmk.html\">Catalogo di programmi per MK-61<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p><b>Piccola digressione su MK-52<\/b> <i>(da Wikipedia)<\/i><\/p>\n<p>Il MK-52 ha volato nello spazio a bordo della navetta 'Soyuz TM-7'. Era progettato per calcolare la traiettoria di atterraggio nel caso in cui il computer di bordo si guastasse.<\/p>\n<p>Il MK-52, con l'unit\u00e0 di espansione della memoria 'Elettronica-Astro', \u00e8 stato fornito a partire dal 1988 alle navi della Marina Militare come parte del kit di calcolo del navigatore. <\/p><\/blockquote>\n<h2>I primi computer personali<\/h2>\n<p><img decoding=\"async\" alt=\"Evoluzione dei mezzi di distribuzione, o riflessioni su Docker, deb, jar e altro\" src=\"\/wp-content\/uploads\/2019\/03\/5d443c3919023854c53c83ac2265cea3.jpg\" style=\"display:block;margin: 0 auto;\" \/> Torniamo ai tempi <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>. \u00c8 evidente che la memoria era aumentata, e inserire il codice su carta non era pi\u00f9 un'opzione (anche se per un po' ho fatto proprio cos\u00ec, poich\u00e9 non c'era altro supporto disponibile). Il principale mezzo di archiviazione e distribuzione del software divenne le audiocassette per registratori.<\/p>\n<p><br clear=\"all\"><br \/>\n<br clear=\"all\"><br \/>\n<img decoding=\"async\" alt=\"Evoluzione dei mezzi di distribuzione, o riflessioni su Docker, deb, jar e altro\" src=\"\/wp-content\/uploads\/2019\/03\/988316eac02a95a16e15502a826f0653.jpg\" style=\"display:block;margin: 0 auto;\" \/>Lo storage su cassetta era solitamente rappresentato da uno o due file binari, mentre il resto era contenuto all'interno. L'affidabilit\u00e0 era molto bassa, e si dovevano mantenere 2-3 copie del programma. Anche i tempi di caricamento non erano soddisfacenti, e gli appassionati sperimentavano con diverse codifiche di frequenza per affrontare questi difetti. All'epoca non mi dedicavo ancora allo sviluppo software professionale (se non per programmi semplici in Basic), quindi non posso purtroppo fornire dettagli su come tutto fosse strutturato internamente. Il fatto stesso che ci fosse solo la RAM nel computer determinava per la maggior parte la semplicit\u00e0 dello schema di archiviazione dei dati.<\/p>\n<h2>L'emergere di supporti di informazioni affidabili e di grande capacit\u00e0<\/h2>\n<p>\nIn seguito, arrivano i dischetti, semplificando il processo di copia e aumentando l'affidabilit\u00e0.<br \/>\nMa la situazione cambia radicalmente solo con l'arrivo di archiviazioni locali sufficientemente grandi sotto forma di HDD.<\/p>\n<p>Cambia radicalmente il tipo di fornitura: nascono programmi di installazione che gestiscono il processo di configurazione del sistema, oltre alla pulizia dopo la disinstallazione, poich\u00e9 i programmi non vengono semplicemente letti in memoria, ma copiati in uno storage locale, dal quale \u00e8 necessario imparare a rimuovere ci\u00f2 che non serve.<\/p>\n<p>Parallelamente aumenta la complessit\u00e0 del software fornito.<br \/>\nIl numero di file nella fornitura cresce da uno a centinaia e migliaia, sorgono conflitti di versioni delle librerie e altre problematiche quando diversi programmi utilizzano gli stessi dati.<\/p>\n<p><img decoding=\"async\" alt=\"Evoluzione dei mezzi di distribuzione, o riflessioni su Docker, deb, jar e altro\" src=\"\/wp-content\/uploads\/2019\/03\/48af8fca591a1061df45cd619854a59a.jpg\" style=\"display:block;margin: 0 auto;\" \/> All'epoca non conoscevo ancora l'esistenza di Linux, vivevo nel mondo di MS DOS e, successivamente, Windows, e programmavo in Borland Pascal e Delphi, a volte dando un'occhiata al C++. Per la fornitura dei prodotti all'epoca molti utilizzavano InstallShield <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/InstallShield\">ru.wikipedia.org\/wiki\/InstallShield<\/a><\/noindex>, che risolveva con successo tutte le sfide poste dal deployment e dalla configurazione del software.<\/p>\n<p><br clear=\"all\"><br \/>\n<br clear=\"all\"><\/p>\n<h2>L'era di Internet<\/h2>\n<p>\nLa complessit\u00e0 dei sistemi software sta aumentando, passando da monoliti e applicazioni desktop a sistemi distribuiti, client leggeri e microservizi. Ora non \u00e8 pi\u00f9 necessario configurare solo un programma, ma un insieme di essi, in modo che possano funzionare insieme.<\/p>\n<p>La concezione \u00e8 cambiata completamente, \u00e8 arrivato Internet e l'era dei servizi cloud ha avuto inizio. Era ancora nelle fasi iniziali, sotto forma di siti web, e nessuno osava sognare servizi particolari. Ma questo \u00e8 stato un momento cruciale sia per lo sviluppo che per la fornitura delle applicazioni.<\/p>\n<p>Ho notato che in quel periodo c'\u00e8 stata una cambiamento generazionale tra i programmatori (o era solo nella mia cerchia), e sembrava che tutti i vecchi metodi di distribuzione fossero stati dimenticati all'improvviso, ricominciando da zero: tutta la distribuzione \u00e8 stata effettuata tramite script fai-da-te e questo \u00e8 stato definito con orgoglio \"Continuous delivery\". Di fatto, \u00e8 iniziato un periodo di caos, durante il quale il passato \u00e8 stato dimenticato e non utilizzato, mentre il nuovo era semplicemente assente.<\/p>\n<p>Ricordo i tempi in cui nella societ\u00e0 in cui lavoravo (non far\u00f2 nomi), invece di creare pacchetti attraverso ant (maven all'epoca non era ancora popolare o non esisteva affatto), la gente semplicemente compilava jar nell'IDE e li committava serenamente in SVN. Di conseguenza, il deployment consisteva nel prelevare il file da SVN e copiarlo via SSH sulla macchina necessaria. Cos\u00ec semplice e rudimentale.<\/p>\n<p>In quel periodo, la fornitura di semplici siti web in PHP avveniva in modo estremamente primitivo, semplicemente copiando il file corretto tramite FTP sulla macchina di destinazione. A volte nemmeno questo \u2013 il codice veniva modificato dal vivo sul server di produzione, ed era un vero status symbol avere dei backup da qualche parte.<\/p>\n<p><br clear=\"all\"><\/p>\n<h4>Pacchetti RPM e DEB<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Evoluzione dei mezzi di distribuzione, o riflessioni su Docker, deb, jar e altro\" src=\"\/wp-content\/uploads\/2019\/03\/8590e7db6c67cad4b97654465ba5e946.jpg\" style=\"display:block;margin: 0 auto;\" \/>D'altra parte, con lo sviluppo di Internet, i sistemi Unix-like hanno cominciato a guadagnare sempre pi\u00f9 popolarit\u00e0; in particolare, in quel periodo ho scoperto RedHat Linux 6, intorno all'anno 2000. Naturalmente, anche l\u00ec c'erano strumenti specifici per la fornitura del software; secondo Wikipedia, RPM come principale gestore di pacchetti \u00e8 apparso nel 1995 con la versione 2.0 di RedHat Linux. Da allora, fino ad oggi, il sistema viene fornito sotto forma di pacchetti RPM ed esiste e si sviluppa con successo.<\/p>\n<p>Le distribuzioni della famiglia Debian hanno seguito un percorso simile e hanno implementato la fornitura sotto forma di pacchetti deb, che rimane invariato fino ai giorni nostri.<\/p>\n<p>I gestori di pacchetti consentono di fornire i prodotti software, configurarli durante l'installazione, gestire le dipendenze tra diversi pacchetti, eseguire la rimozione dei prodotti e liberare spazio durante la disinstallazione. In sostanza, questo \u00e8 tutto ci\u00f2 di cui si ha bisogno, ecco perch\u00e9 sono rimasti in uso per diversi decenni praticamente senza modifiche.<\/p>\n<p>L'approccio cloud ha aggiunto ai gestori di pacchetti la possibilit\u00e0 di installare non solo da supporti fisici, ma anche da repository cloud, ma sostanzialmente poco \u00e8 cambiato.<\/p>\n<p>Va notato che attualmente ci sono alcuni tentativi di allontanarsi dai pacchetti deb e di passare ai pacchetti snap, ma di questo parleremo pi\u00f9 avanti.<\/p>\n<p>Ecco quindi che questa nuova generazione di sviluppatori cloud, che non conosceva n\u00e9 DEB n\u00e9 RPM, cresceva lentamente, accumulando esperienza, i prodotti diventavano pi\u00f9 complessi e c'era bisogno di metodi di fornitura pi\u00f9 ragionevoli rispetto a FTP, script bash e simili improvvisazioni da studenti. <br \/>\nE qui entra in gioco Docker, una sorta di miscela di virtualizzazione, gestione delle risorse e metodo di distribuzione. \u00c8 qualcosa di trendy e giovanile, ma \u00e8 davvero necessario per tutto? \u00c8 una panacea?<\/p>\n<p>Dalla mia esperienza, molto spesso Docker non \u00e8 proposto come una scelta ragionevole, ma semplicemente perch\u00e9 se ne parla nella comunit\u00e0, e chi lo propone ne sa solo parlare. Dall'altra parte, dei vecchi e buoni sistemi di packaging si parla ben poco \u2014 esistono e fanno il loro lavoro in silenzio e senza farsi notare. In questa situazione, non sembra esserci molta scelta \u2014 la decisione \u00e8 piuttosto ovvia: Docker.<\/p>\n<p>Cercher\u00f2 di condividere l'esperienza di come abbiamo implementato Docker e quali risultati abbiamo ottenuto.<\/p>\n<p><br clear=\"all\"><\/p>\n<h4>Script personalizzati<\/h4>\n<p>\nInizialmente avevamo script bash che distribuivano archive jar sulle macchine necessarie. Questo processo era gestito da Jenkins. Funzionava con successo, poich\u00e9 l'archive jar stesso \u00e8 gi\u00e0 un pacchetto che contiene classi, risorse e persino configurazioni. Se si uniscono il massimo di tutto \u2014 decomporlo con uno script non \u00e8 la cosa pi\u00f9 difficile da fare.<\/p>\n<p>Ma gli script presentano alcuni svantaggi:<\/p>\n<ul>\n<li> Gli script sono generalmente scritti in fretta e risultano cos\u00ec primitivi da contenere solo lo scenario pi\u00f9 favorevole. Questo \u00e8 favorito dal fatto che lo sviluppatore \u00e8 interessato a una consegna rapida, mentre uno script adeguato richiede un investimento considerevole di risorse.<\/li>\n<li> Di conseguenza, gli script non contengono procedure di disinstallazione.<\/li>\n<li> Non c'\u00e8 una procedura di aggiornamento definita.<\/li>\n<li> Con l'arrivo di un nuovo prodotto, \u00e8 necessario scrivere un nuovo script.<\/li>\n<li> Non c'\u00e8 supporto per le dipendenze.<\/li>\n<\/ul>\n<p>\nCerto, \u00e8 possibile scrivere uno script complesso, ma, come ho detto sopra, questo richiede tempo per lo sviluppo, e non \u00e8 poco; e come sappiamo, il tempo \u00e8 sempre limitato.<\/p>\n<p>Tutto ci\u00f2 limita chiaramente l'ambito di applicazione di questo metodo di distribuzione a sistemi molto semplici. \u00c8 giunto il momento di cambiare.<\/p>\n<p><br clear=\"all\"><\/p>\n<h4>Docker<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Evoluzione dei mezzi di distribuzione, o riflessioni su Docker, deb, jar e altro\" src=\"\/wp-content\/uploads\/2019\/03\/f9c6180a2775513ce88c5425727817d1.jpg\" style=\"display:block;margin: 0 auto;\" \/>A un certo punto, abbiamo iniziato a ricevere freschi sviluppatori intermedi, pieni di idee e sognanti Docker. Beh, via! Ci proviamo! Ci sono state due tentativi. Entrambi falliti \u2014 diciamo che a causa di grandi ambizioni, ma di esperienza reale insufficiente. Era necessario forzare e completare a qualsiasi costo? Probabilmente no \u2014 il team deve evolversi gradualmente al livello necessario prima di poter utilizzare gli strumenti adeguati. Inoltre, utilizzando immagini Docker pronte all'uso, ci siamo spesso imbattuti in problemi con la rete (che, probabilmente, era anche legata all'instabilit\u00e0 di Docker stesso) o era difficile espandere i contenitori di altri.<\/p>\n<p>Quali inconvenienti abbiamo riscontrato?<\/p>\n<ul>\n<li> Problemi di rete in modalit\u00e0 bridge<\/li>\n<li> Difficolt\u00e0 a visualizzare i log nel contenitore (se non sono stati estratti separatamente nel filesystem della macchina host)<\/li>\n<li> Ogni tanto strani blocchi di ElasticSearch all'interno del contenitore, non siamo riusciti a identificare la causa, contenitore ufficiale<\/li>\n<li> Scomodo utilizzare la shell all'interno del contenitore \u2014 tutto \u00e8 molto ridotto, mancano strumenti familiari<\/li>\n<li> Grande dimensione dei contenitori raccolti \u2014 costoso da mantenere<\/li>\n<li> A causa delle grandi dimensioni dei container, \u00e8 difficile mantenere pi\u00f9 versioni.<\/li>\n<li> Assemblaggio pi\u00f9 lungo, a differenza di altri metodi (script o pacchetti deb).<\/li>\n<\/ul>\n<p>\nDall'altra parte, cosa rende meno conveniente il deployment di un servizio Spring in formato jar tramite lo stesso deb? \u00c8 davvero necessaria l'isolamento delle risorse? Vale la pena rinunciare a strumenti utili del sistema operativo mettendo il servizio in un container molto ridotto?<\/p>\n<p>Come dimostrato nella pratica, nella realt\u00e0 non \u00e8 necessario; un pacchetto deb \u00e8 sufficiente nel 90% dei casi.<\/p>\n<p>Quando allora il vecchio buon deb non funziona e quando abbiamo realmente bisogno di Docker?<\/p>\n<p>Per noi, si \u00e8 trattato di implementare servizi in Python. Molte librerie necessarie per l'apprendimento automatico mancavano nella fornitura standard del sistema operativo (e quelle che c'erano non erano le versioni corrette), hack con le impostazioni, e la necessit\u00e0 di diverse versioni per servizi differenti che risiedono sullo stesso sistema host hanno fatto s\u00ec che l'unico modo ragionevole per fornire questa miscela complessa risultasse essere Docker. L'impegno necessario per assemblare un contenitore Docker si \u00e8 rivelato inferiore rispetto all'idea di impacchettare tutto questo in singoli pacchetti deb con le relative dipendenze, e in effetti, nessuno in sano spirito si sarebbe preso la briga di farlo.<\/p>\n<p>Il secondo aspetto dove si prevede di utilizzare Docker \u00e8 per l'implementazione dei servizi secondo lo schema blue-green deploy. Ma qui si desidera ottenere un aumento graduale della complessit\u00e0: prima vengono creati i pacchetti deb, e poi da questi si assembla il contenitore Docker.<\/p>\n<p><br clear=\"all\"><\/p>\n<h4>Pacchetti Snap<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Evoluzione dei mezzi di distribuzione, o riflessioni su Docker, deb, jar e altro\" src=\"\/wp-content\/uploads\/2019\/03\/8c9001b28757f8427c85e54bca5b4e73.jpg\" style=\"display:block;margin: 0 auto;\" \/> Torniamo ai pacchetti snap. Sono stati introdotti ufficialmente per la prima volta in Ubuntu 16.04. A differenza dei classici pacchetti deb e rpm, i pacchetti snap includono tutte le dipendenze. Da un lato, questo consente di evitare conflitti tra le librerie, dall'altro lato, comporta dimensioni pi\u00f9 considerevoli per il pacchetto risultante. Inoltre, pu\u00f2 influenzare la sicurezza del sistema: nel caso in cui venga fornito uno snap, il developer deve monitorare tutte le modifiche delle librerie incluse. Insomma, non \u00e8 tutto cos\u00ec semplice e la felicit\u00e0 universale nel loro utilizzo non si materializza. Tuttavia, rimangono un'alternativa ragionevole, soprattutto se Docker viene utilizzato solo come strumento di imballaggio e non di virtualizzazione.<\/p>\n<p><br clear=\"all\"><br \/>\nIn conclusione, al momento utilizziamo una combinazione ragionevole di pacchetti deb e container Docker, che, in alcuni casi, potremmo sostituire con pacchetti snap.<\/p>\n<p class=\"for_users_only_msg\">Solo gli utenti registrati possono partecipare al sondaggio. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Accedi<\/a><\/noindex>, per favore.<\/p>\n<h2 class=\"default-block__polling-title\">E cosa utilizzate voi per la distribuzione?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Script personalizzati<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Copiamo manualmente via FTP<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Pacchetti deb<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Pacchetti rpm<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Pacchetti snap<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Immagini Docker<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Immagini delle macchine virtuali<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Cloniamo interamente l'HDD<\/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>                    Altro<\/p>\n<\/li>\n<\/ul>\n<p>    Hanno votato 109 utenti. 32 utenti si sono astenuti.<\/p>\n<p>Fonte: <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 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\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,\" \/>\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\/it\/blog\/administrirovanie\/evolyutsiya-sredstv-postavki-ili-razmyshleniya-o-docker-deb-jar-i-prochem\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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 \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,\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/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\udd47L'evoluzione dei metodi di distribuzione, o riflessioni su Docker, deb, jar e altro | ProHoster","description":"In un certo momento, ho deciso di scrivere un articolo sulla distribuzione tramite contenitori Docker e pacchetti deb, ma quando ho iniziato, mi sono ritrovato a riflettere su tempi lontani, quelli dei primi personal computer e persino delle calcolatrici. Invece di una sterile comparazione tra Docker e deb, sono emerse queste riflessioni sull'evoluzione, che ora vi presento. Qualsiasi prodotto,","canonical_url":"https:\/\/prohoster.info\/it\/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":"it_IT","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 \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,","og:url":"https:\/\/prohoster.info\/it\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/42175","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=42175"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/42175\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=42175"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=42175"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=42175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}