{"id":31641,"date":"2019-10-31T21:42:19","date_gmt":"2019-10-31T18:42:19","guid":{"rendered":"https:\/\/prohoster.info\/blog\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da\/"},"modified":"2019-10-31T21:42:19","modified_gmt":"2019-10-31T18:42:19","slug":"docker-eto-igrushka-ili-net-ili-vsyo-taki-da","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da","title":{"rendered":"Docker \u00e8 un giocattolo o no? Oppure s\u00ec?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ciao a tutti!<\/p>\n<p><\/p>\n<p>Vorrei davvero iniziare subito a parlare dell'argomento, ma \u00e8 meglio se racconto un po' la mia storia:<\/p>\n<p><\/p>\n<h2>Introduzione<\/h2>\n<p><\/p>\n<p>Sono un programmatore con esperienza nello sviluppo di applicazioni web front-end, scala\/java e nodejs sul server. <\/p>\n<p><\/p>\n<p>Per molto tempo (esattamente da un paio di anni) ho pensato che Docker fosse una manna dal cielo e un ottimo strumento, e che ogni sviluppatore dovesse saperlo usare. Da qui deriva che ogni sviluppatore dovrebbe avere Docker installato sulla propria macchina locale. Anzi, parlando della mia opinione, date un'occhiata agli annunci di lavoro su hh. In quasi ogni secondo c'\u00e8 un riferimento a Docker e se lo possedete, sar\u00e0 un vantaggio competitivo \ud83d\ude09<\/p>\n<p><\/p>\n<p>Nel mio percorso ho incontrato molte persone, con atteggiamenti diversi verso Docker e la sua ecosistema. Alcuni dicevano che fosse uno strumento comodo, che garantiva la compatibilit\u00e0 tra piattaforme. Altri non capivano perch\u00e9 dovessero eseguire applicazioni in container e quale vantaggio ci fosse, altri ancora erano indifferenti e si limitavano a scrivere codice e tornare a casa \u2014 devo ammettere che li invidio \ud83d\ude42<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Motivi per l'uso<\/h2>\n<p><\/p>\n<p>Perch\u00e9 ho usato Docker? Probabilmente per i seguenti motivi:<\/p>\n<p><\/p>\n<ul>\n<li>esecuzione di database, il 99% delle applicazioni li utilizza<\/li>\n<li>esecuzione di Nginx per distribuire il front-end e fare proxy verso il back-end<\/li>\n<li>puoi impacchettare l'applicazione in un'immagine Docker, cos\u00ec la mia applicazione funzioner\u00e0 ovunque ci sia Docker, il problema della distribuzione \u00e8 gi\u00e0 risolto<\/li>\n<li>discovery del servizio integrato, \u00e8 possibile creare microservizi, ogni container (collegato a una rete comune) pu\u00f2 facilmente comunicare con l'altro tramite alias, molto comodo<\/li>\n<li>\u00c8 interessante creare un contenitore e \"sperimentare\" con esso.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Cosa non mi \u00e8 mai piaciuto di Docker:<\/h2>\n<p><\/p>\n<ul>\n<li>per far funzionare la mia applicazione, ho bisogno di Docker sul server. E perch\u00e9 dovrei farlo, se le mie applicazioni funzionano su JRE o su Node.js e l'ambiente per loro \u00e8 gi\u00e0 presente nel server?<\/li>\n<li>se voglio eseguire la mia immagine (privata) assemblata localmente su un server remoto, ho bisogno di un mio repository Docker, devo avere un registry da qualche parte e devo anche configurare HTTPS, perch\u00e9 Docker CLI funziona solo tramite HTTPS. Oh cavolo... ci sono ovviamente opzioni, come salvare l'immagine localmente tramite <code>docker save<\/code> E attraverso scp puoi semplicemente inviare un'immagine... Ma richiede tanto lavoro. Inoltre, sembra una soluzione \"workaround\" fino a quando non si ha un proprio repository.<\/li>\n<li><code>docker-compose<\/code>\u00c8 necessario solo per avviare i container. E basta. Non pu\u00f2 fare nient'altro. <code>Docker-compose<\/code> ha un sacco di versioni dei suoi file, la sua sintassi. Per quanto sia dichiarativo, non voglio leggere la loro documentazione. Non ne ho pi\u00f9 bisogno altrove.<\/li>\n<li>nella maggior parte dei casi, quando si lavora in team, le persone scrivono Dockerfile in modo molto scadente, non capiscono come funziona la cache, aggiungono nell'immagine tutto ci\u00f2 che serve e non serve, ereditano immagini che non esistono su dockerhub o in repository privati, creano qualche <code>docker-compose<\/code> I file con i database non sono persistenti. Eppure gli sviluppatori dichiarano con orgoglio che Docker \u00e8 fantastico, funziona tutto in locale e le risorse umane scrivono con importanza nelle offerte di lavoro: \"Utilizziamo Docker e abbiamo bisogno di un candidato con tale esperienza\".<\/li>\n<li>hanno pensieri costanti su come avviare in docker tutto e di pi\u00f9: postgresql, kafka, redis. Peccato che non tutto funzioni nei container, non tutto \u00e8 facile da configurare e avviare. Sono supportati da sviluppatori esterni, non dai fornitori stessi. E a proposito, sorge subito una domanda: se i fornitori non si preoccupano di mantenere i loro prodotti in docker, forse sanno qualcosa di pi\u00f9?<\/li>\n<li>sorge sempre la questione della persistenza dei dati del container. E qui si pensa, devo semplicemente montare una directory dell'host oppure creare un volume docker o fare un data container che ora <code>deprecated<\/code>? \u0415\u0441\u043b\u0438 \u044f \u043c\u043e\u043d\u0442\u0438\u0440\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0442\u043e \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0447\u0442\u043e uid \u0438 gid \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 id \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432\u0448\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0438\u043d\u0430\u0447\u0435 \u0444\u0430\u0439\u043b\u044b \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 root. \u0415\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <code>volume<\/code> i dati verranno semplicemente creati in qualche <code>\/usr\/*<\/code> E ci sar\u00e0 la stessa storia con uid e gid come nel primo caso. Se esegui un componente di terze parti, devi leggere la documentazione e cercare la risposta alla domanda: \"In quali directory del contenitore il componente scrive i file?\"<\/li>\n<\/ul>\n<p>Non mi \u00e8 mai piaciuto dover armeggiare troppo con docker <strong>all'inizio<\/strong>: pensavo a come avviare i container, da quali immagini avviarmi, creavo Makefile che contenevano alias per lunghe comandi docker. Non sopportavo docker-compose, perch\u00e9 non volevo imparare un altro strumento dell'ecosistema docker. E <code>docker-compose up<\/code> mi ha stressato, soprattutto se c'erano anche <code>build<\/code> costruzioni, e non immagini gi\u00e0 pronte. Tutto ci\u00f2 che volevo davvero era semplicemente fare il prodotto in modo efficace e veloce. Ma non riuscivo a mettere in ordine l'uso di docker.<\/p>\n<p><\/p>\n<h2>Introduzione ad Ansible<\/h2>\n<p><\/p>\n<p>Recentemente (un paio di mesi fa), ho lavorato con un team DevOps, quasi ogni partecipante era negativo nei confronti di docker. Per motivi:<\/p>\n<p><\/p>\n<ul>\n<li>docker modifica iptables (anche se si pu\u00f2 disattivare in daemon.json)<\/li>\n<li>non utilizzeremo docker in produzione<\/li>\n<li>se il demone docker si arresta, allora di conseguenza si arrestano anche tutti i contenitori con l'infrastruttura<\/li>\n<li>non c'\u00e8 bisogno di docker<\/li>\n<li>perch\u00e9 usare docker se ci sono Ansible e macchine virtuali<\/li>\n<\/ul>\n<p><\/p>\n<p>Nello stesso lavoro ho conosciuto un altro strumento: Ansible. Una volta ne avevo sentito parlare, ma non avevo mai provato a scrivere i miei playbook. Ora ho iniziato a scrivere i miei task e la mia visione \u00e8 cambiata completamente! Perch\u00e9 ho capito: Ansible ha moduli per l'avvio degli stessi contenitori docker, la creazione di immagini, reti, ecc., e i contenitori possono essere avviati non solo localmente, ma anche su server remoti! La mia gioia non aveva limiti: ho trovato uno strumento DEGNO e ho buttato via i miei file Makefile e docker-compose, sostituiti da task yaml. Il codice \u00e8 stato ridotto grazie all'uso di strutture tipo <code>loop<\/code>, <code>when<\/code>, ecc.<\/p>\n<p><\/p>\n<h2>Docker per eseguire componenti esterni tipo database<\/h2>\n<p><\/p>\n<p>Di recente sono entrato in contatto con i tunnel ssh. Ho scoperto che \u00e8 molto semplice \"ridirezionare\" la porta di un server remoto su una porta locale. Il server remoto pu\u00f2 essere sia una macchina nel cloud che una macchina virtuale in esecuzione su VirtualBox. Se io o un mio collega abbiamo bisogno di un database (o di qualsiasi altro componente esterno), possiamo semplicemente avviare un server con quel componente e spegnerlo quando non \u00e8 pi\u00f9 necessario. Il ridirezionamento delle porte genera lo stesso effetto di un database eseguito in un contenitore Docker.<\/p>\n<p><\/p>\n<p>Questo comando inoltra la mia porta locale su un server remoto con postgresql:<\/p>\n<p><\/p>\n<blockquote><p>ssh -L 9000:localhost:5432 user@example.com<\/p><\/blockquote>\n<p>L'uso di un server remoto risolve il problema di sviluppo in team. Diversi sviluppatori possono utilizzare lo stesso server, non devono necessariamente sapere come configurare postgresql, districarsi con docker e altre complicazioni. Sul server remoto si pu\u00f2 installare lo stesso database in docker, se \u00e8 difficile installare una versione specifica. Tutto ci\u00f2 di cui hanno bisogno gli sviluppatori \u00e8 avere accesso SSH!<\/p>\n<p><\/p>\n<p>Ho recentemente letto che i tunnel SSH sono una funzionalit\u00e0 limitata di un normale VPN! \u00c8 possibile semplicemente configurare OpenVPN o altre implementazioni VPN, impostare l'infrastruttura e metterla a disposizione degli sviluppatori. \u00c8 davvero fantastico!<\/p>\n<p><\/p>\n<p>Fortunatamente, AWS, GoogleCloud e altri offrono un anno di utilizzo gratuito, quindi approfittatene! Costano poco se si spengono quando non vengono utilizzati. Mi sono sempre chiesto in quali situazioni avrei bisogno di un server remoto come gcloud, sembra che l'abbia trovato.<\/p>\n<p><\/p>\n<p>Come macchina virtuale in locale si pu\u00f2 usare lo stesso Alpine che \u00e8 attivamente utilizzato nei container docker. O altri distribuzioni leggere per far avviare la macchina pi\u00f9 velocemente.<\/p>\n<p><\/p>\n<p>In sintesi: \u00e8 possibile e necessario eseguire database e altre infrastrutture su server remoti o in virtualbox. Non ho bisogno di docker per questi scopi.<\/p>\n<p><\/p>\n<h2>Un po' su immagini docker e distribuzione<\/h2>\n<p><\/p>\n<p>Ho gi\u00e0 scritto <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/443136\/\">articolo<\/a><\/noindex> in cui volevo far capire che l'uso delle immagini docker non fornisce alcuna garanzia. Le immagini docker servono solo per creare un container docker. Se ti impegni con un'immagine docker, significa che ti impegni all'uso dei container docker e rimarrai solo con loro.<\/p>\n<p><\/p>\n<p>Hai mai visto sviluppatori software che hanno portato i loro prodotti solo in immagini docker?<br \/>\nIl risultato della maggior parte dei prodotti \u00e8 un file binario per una specifica piattaforma, che viene semplicemente aggiunto all'immagine docker ereditata dalla piattaforma richiesta. Non ti sei mai chiesto perch\u00e9 ci sono cos\u00ec tante immagini simili su dockerhub? Ad esempio, cerca nginx, vedrai centinaia di immagini da diverse persone. Queste persone non hanno sviluppato il nginx stesso, hanno semplicemente aggiunto il nginx ufficiale alla loro immagine docker con le proprie configurazioni per rendere pi\u00f9 facile l'avvio dei container. <\/p>\n<p><\/p>\n<p>In generale, si pu\u00f2 semplicemente conservare in tgz, se qualcuno avr\u00e0 bisogno di eseguirlo in docker, pu\u00f2 semplicemente aggiungere tgz nel Dockerfile, ereditare l'ambiente necessario e creare ulteriori funzionalit\u00e0 che non modificano l'applicazione stessa in tgz. Chiunque creer\u00e0 un'immagine docker, sapr\u00e0 di cosa si tratta tgz e cosa serve per farla funzionare. Questo \u00e8 esattamente come utilizzo docker. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kondaurovDev\/dockerfile\">qui<\/a><\/noindex><\/p>\n<p><\/p>\n<p>In sintesi: non ho bisogno di un docker registry, user\u00f2 qualche S3 o semplicemente uno storage di file tipo google drive\/dropbox.<\/p>\n<p><\/p>\n<h2>Docker in CI<\/h2>\n<p><\/p>\n<p>Tutte le aziende in cui ho lavorato sono simili tra loro. Di solito, sono aziende di prodotto. Cio\u00e8 hanno un'applicazione principale, uno stack tecnologico (magari un paio - tre linguaggi di programmazione).<\/p>\n<p><\/p>\n<p>Queste aziende utilizzano Docker sui loro server dove viene eseguito il processo CI. La domanda \u00e8: perch\u00e9 \u00e8 necessario costruire progetti in un contenitore Docker sui propri server? Perch\u00e9 non preparare semplicemente l'ambiente per la compilazione, ad esempio scrivere un playbook Ansible che installer\u00e0 le versioni necessarie di Node.js, PHP, JDK, copier\u00e0 le chiavi SSH, ecc. sul server in cui avverr\u00e0 la compilazione? <\/p>\n<p><\/p>\n<p>Ora capisco che \u00e8 come spararsi ai piedi, perch\u00e9 Docker non offre alcun vantaggio con la sua isolamento. I problemi con CI in Docker con cui mi sono trovato sono:<\/p>\n<p><\/p>\n<ul>\n<li>serve nuovamente un'immagine Docker per la compilazione. bisogna cercare un'immagine o scrivere il proprio Dockerfile.<\/li>\n<li>C'\u00e8 il 90% di probabilit\u00e0 che sia necessario passare alcune chiavi SSH, dati sensibili che non si desidera scrivere nell'immagine Docker.<\/li>\n<li>il contenitore viene creato e muore, tutti i cache vengono persi con esso. La compilazione successiva dovr\u00e0 riscaricare tutte le dipendenze del progetto, il che \u00e8 lungo e inefficiente, e il tempo \u00e8 denaro.<\/li>\n<\/ul>\n<p><\/p>\n<p>Gli sviluppatori non compilano progetti nei contenitori Docker (una volta ero un grande fan, ci tengo a sottolinearlo xD). In Java c'\u00e8 la possibilit\u00e0 di avere pi\u00f9 versioni e cambiarle con un solo comando a quella necessaria al momento. Lo stesso vale per Node.js, c'\u00e8 nvm.<\/p>\n<p><\/p>\n<h2>Conclusione<\/h2>\n<p><\/p>\n<p>Ritengo che Docker sia uno strumento molto potente e flessibile, ma questo \u00e8 anche il suo svantaggio (suona strano, vero?). Grazie a questo, le aziende si \"abituano\" facilmente ad usarlo, impiegandolo dove necessario e non. Gli sviluppatori avviano i loro contenitori, creando il loro ambiente, e poi il tutto si integra fluidamente nel CI e nella produzione. Il team DevOps scrive qualche tipo di \"bicicletta\" per avviare questi contenitori.<\/p>\n<p><\/p>\n<p>Utilizzate Docker solo nell' <strong>ultimissimo<\/strong> passaggio del vostro processo di lavoro, non portatelo nel progetto all'inizio. Non risolver\u00e0 i vostri problemi aziendali. Sposter\u00e0 solo i problemi a un ALTRO livello e offrir\u00e0 le sue soluzioni, voi farete doppio lavoro.<\/p>\n<p><\/p>\n<p><strong><em>Quando \u00e8 necessario Docker<\/em><\/strong>: sono arrivato alla conclusione che Docker \u00e8 molto utile nell'ottimizzare il processo stabilito, ma non nella costruzione delle funzionalit\u00e0 di base.<\/p>\n<p><\/p>\n<p>Se comunque avete deciso di utilizzare Docker, allora:<\/p>\n<p><\/p>\n<ul>\n<li>siate estremamente cauti<\/li>\n<li>non imposte l'utilizzo di Docker agli sviluppatori<\/li>\n<li>localizzate il suo utilizzo in un solo posto, non spargetelo su tutti i repository con Dockerfile e docker-compose<\/li>\n<\/ul>\n<p><\/p>\n<p>PS:<\/p>\n<p><\/p>\n<ul>\n<li>Recentemente mi sono imbattuto in <noindex><a rel=\"nofollow\" href=\"https:\/\/www.packer.io\/\">packer<\/a><\/noindex> E si dice che lavori molto bene con Ansible e consenta di uniformare il processo di creazione delle immagini (compresa l'immagine Docker)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.smashcompany.com\/technology\/docker-is-a-dangerous-gamble-which-we-will-regret\">Anch'esso su Docker, articolo interessante<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>Grazie per aver letto, vi auguro soluzioni trasparenti nei vostri affari e giornate lavorative produttive!<\/p>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/445914\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041e\u043e\u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0442\u0435\u043c\u0435, \u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043c\u043e\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e: \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u042f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0441 \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 frontend \u043e\u0434\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, scala\/java \u0438 nodejs \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0433\u043e (\u0443\u0436\u0435 \u0442\u043e\u0447\u043d\u043e \u043f\u0430\u0440\u0443 \u2014 \u0442\u0440\u043e\u0439\u043a\u0443 \u043b\u0435\u0442), \u044f \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0441\u044f \u043c\u043d\u0435\u043d\u0438\u044f, \u0447\u0442\u043e docker \u044d\u0442\u043e \u043c\u0430\u043d\u043d\u0430 \u043d\u0435\u0431\u0435\u0441\u043d\u0430\u044f \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0443\u0442\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0438 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 [&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-31641","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041e\u043e\u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0442\u0435\u043c\u0435, \u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043c\u043e\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e: \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u042f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0441 \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 frontend.\" \/>\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\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\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\udd47Docker \u2014 \u044d\u0442\u043e \u0438\u0433\u0440\u0443\u0448\u043a\u0430 \u0438\u043b\u0438 \u043d\u0435\u0442? \u0418\u043b\u0438 \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0434\u0430? | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041e\u043e\u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0442\u0435\u043c\u0435, \u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043c\u043e\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e: \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u042f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0441 \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 frontend.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:42:19+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:42:19+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\udd47Docker \u00e8 un giocattolo o no? O alla fine s\u00ec?","description":"Ciao a tutti! Ho davvero voglia di tuffarmi subito nel tema, ma \u00e8 giusto raccontare un po' della mia storia: Introduzione Sono un programmatore con esperienza nello sviluppo frontend.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da","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\udd47Docker \u2014 \u044d\u0442\u043e \u0438\u0433\u0440\u0443\u0448\u043a\u0430 \u0438\u043b\u0438 \u043d\u0435\u0442? \u0418\u043b\u0438 \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0434\u0430? | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041e\u043e\u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0442\u0435\u043c\u0435, \u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043c\u043e\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e: \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u042f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0441 \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 frontend.","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:42:19+00:00","article:modified_time":"2019-10-31T18:42:19+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31641","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-21 07:08:22","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:13:28","updated":"2026-01-21 07:08:22","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/31641","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=31641"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/31641\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=31641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=31641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=31641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}