{"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? O forse s\u00ec?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ciao a tutti!<\/p>\n<p><\/p>\n<p>Vorrei veramente iniziare subito con l'argomento, ma \u00e8 pi\u00f9 giusto raccontare un po' della 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 single-page, scala\/java e nodejs sul server. <\/p>\n<p><\/p>\n<p>Per molto tempo (sicuramente un paio di anni) ho pensato che docker fosse un dono del cielo, un ottimo strumento che ogni sviluppatore dovrebbe sapere utilizzare. Da ci\u00f2 ne deriva che ogni sviluppatore dovrebbe avere docker sul proprio computer locale. E non parlo solo della mia opinione, date un'occhiata alle offerte di lavoro su hh. In ogni seconda c'\u00e8 un riferimento a docker e se lo conoscete, sar\u00e0 il vostro vantaggio competitivo \ud83d\ude09<\/p>\n<p><\/p>\n<p>Nel mio cammino ho incontrato molte persone con atteggiamenti diversi nei confronti di docker e della sua ecosistema. Alcuni dicevano che fosse una cosa comoda che garantiva portabilit\u00e0. Altri non capivano perch\u00e9 dovessero avviarsi in contenitori e quale fosse il vantaggio, alcuni non se ne preoccupavano affatto e scrivevano semplicemente codice per tornare a casa \u2014 invidio, tra l'altro, questo approccio \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>avvio di database, il 99% delle applicazioni li utilizza<\/li>\n<li>avvio di nginx per servire il frontend e fare proxy verso il backend<\/li>\n<li>posso impacchettare l'applicazione in un'immagine docker, il che significa che la mia applicazione funzioner\u00e0 ovunque ci sia docker, risolvendo subito il problema della distribuzione<\/li>\n<li>service discovery out of the box, posso realizzare microservizi, ogni contenitore (connesso a una rete comune) pu\u00f2 facilmente raggiungere l'altro tramite alias, molto comodo<\/li>\n<li>\u00c8 interessante creare un container e \"giocarci\" dentro.<\/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, serve docker stesso sul server. E perch\u00e9 mai dovrei averne bisogno se le mie applicazioni funzionano su jre o nodejs e ci sono gi\u00e0 ambienti per loro sul server?<\/li>\n<li>se voglio avviare la mia immagine (privata) assemblata localmente su un server remoto, ho bisogno di un repository docker, devo avere un registro operativo da qualche parte e inoltre devo configurare https, perch\u00e9 docker cli funziona solo con https. Accidenti\u2026 ci sono certamente opzioni, come salvare l'immagine localmente e <code>docker save<\/code> e trasferire semplicemente l'immagine tramite scp... Ma richiede molto lavoro. Inoltre sembra una soluzione \"provvisoria\" fino a quando non avremo il nostro repository.<\/li>\n<li><code>docker-compose<\/code>. Serve solo per far partire contenitori. E basta. Non pu\u00f2 fare nient'altro. <code>Docker-compose<\/code> ha molte versioni dei suoi file, il suo sintassi. Per quanto dichiarativo possa essere, non voglio leggere la loro documentazione. Non mi servir\u00e0 altrove.<\/li>\n<li>lavorando in team, per la maggior parte, le persone scrivono Dockerfile in modo molto impreciso, non capiscono come viene gestita la cache, aggiungono nell'immagine tutto ci\u00f2 che serve e non serve, ereditano da immagini che non si trovano in dockerhub o nel repository privato, creano file con database e non persistono nulla. Nel frattempo, gli sviluppatori affermano con orgoglio che docker \u00e8 fantastico, loro funzionano tutto localmente e gli HR, \u00e8 importante, lo scrivono nelle offerte: \u00abUtilizziamo docker e abbiamo bisogno di un candidato con tale esperienza\u00bb. <code>docker-compose<\/code> file con i database e niente persiste. I developer affermano con orgoglio che Docker \u00e8 fantastico, che tutto funziona in locale e il dipartimento HR scrive nelle offerte di lavoro: \"Utilizziamo Docker e cerchiamo candidati con questa esperienza\".<\/li>\n<li>c'\u00e8 sempre la questione della persistenza dei dati del contenitore. E qui pensi, devo semplicemente montare una directory dell'host o creare un volume docker o fare un data container che ora<\/li>\n<li>significa che i dati verranno creati in qualche modo <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> e ci sar\u00e0 la stessa storia con uid e gid come nel primo caso. Se avvii un componente di terzi, devi leggere la documentazione e cercare la risposta alla domanda: \u00abin quali directory del contenitore il componente scrive i file?\u00bb <code>\/usr\/*<\/code> e ci sar\u00e0 la stessa storia con uid e gid come nel primo caso. Se avvii un componente di terze parti, bisogna leggere attentamente la documentazione e cercare la risposta alla domanda: \"in quali directory del container il componente scrive i file?\".<\/li>\n<\/ul>\n<p>all'inizio <strong>: pensavo come avviare contenitori, 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<\/strong>mi infastidiva, specialmente se all'interno c'erano ancora <code>docker-compose up<\/code> costruzioni, e non immagini gi\u00e0 pronte. Tutto ci\u00f2 che volevo veramente era semplicemente produrre in modo efficace e veloce. Ma non riesco a mettere in ordine l'uso di docker. <code>build<\/code> Incontro con Ansible<\/p>\n<p><\/p>\n<h2>Recentemente (tre mesi fa), ho lavorato con un team DevOps, quasi ogni partecipante era negativo verso docker per i seguenti motivi:<\/h2>\n<p><\/p>\n<p>docker gestisce iptables (anche se si pu\u00f2 disabilitare in daemon.json)<\/p>\n<p><\/p>\n<ul>\n<li>docker gestisce iptables (anche se pu\u00f2 essere disattivato in daemon.json)<\/li>\n<li>Non utilizzeremo Docker in produzione.<\/li>\n<li>Se il daemon di Docker fallisce, anche tutti i contenitori con l'infrastruttura smetteranno di funzionare.<\/li>\n<li>Non c'\u00e8 bisogno di Docker.<\/li>\n<li>Perch\u00e9 usare Docker se esistono Ansible e macchine virtuali?<\/li>\n<\/ul>\n<p><\/p>\n<p>In quel lavoro ho incontrato anche un altro strumento: Ansible. Ne avevo gi\u00e0 sentito parlare, ma non avevo mai provato a scrivere le mie playbook. Ora ho iniziato a scrivere i miei task e la mia visione \u00e8 cambiata radicalmente! Ho capito che Ansible ha moduli per avviare contenitori Docker, costruire immagini, gestire reti, ecc., e che i contenitori possono essere avviati non solo localmente, ma anche su server remoti! La mia gioia era incontenibile: avevo trovato uno strumento VALIDO e ho abbandonato i miei file Makefile e docker-compose, sostituiti da task YAML. Il codice \u00e8 stato semplificato grazie all'uso di costrutti come <code>loop<\/code>, <code>when<\/code>, ecc.<\/p>\n<p><\/p>\n<h2>Docker per l'avvio di componenti esterni come i database.<\/h2>\n<p><\/p>\n<p>Recentemente ho scoperto i tunnel SSH. Si \u00e8 rivelato molto semplice \"inoltrare\" la porta di un server remoto su una porta locale. Il server remoto pu\u00f2 essere sia una macchina cloud che una macchina virtuale eseguita in VirtualBox. Se io o un mio collega abbiamo bisogno di un database (o di un altro componente di terze parti), possiamo semplicemente avviare il server con questo componente e spegnerlo quando non serve pi\u00f9. L'inoltro delle porte offre lo stesso effetto di un database eseguito in un container Docker.<\/p>\n<p><\/p>\n<p>Questo comando espone la mia porta locale a un server remoto con PostgreSQL:<\/p>\n<p><\/p>\n<blockquote><p>ssh -L 9000:localhost:5432 user@example.com<\/p><\/blockquote>\n<p>Utilizzare un server remoto risolve il problema della collaborazione nello sviluppo. Questo server pu\u00f2 essere utilizzato da pi\u00f9 sviluppatori contemporaneamente, senza la necessit\u00e0 che sappiano configurare PostgreSQL, gestire Docker e altre complessit\u00e0. Sul server remoto \u00e8 possibile installare lo stesso database in Docker, se si ha difficolt\u00e0 a trovare una versione specifica. Tutto ci\u00f2 di cui hanno bisogno gli sviluppatori \u00e8 l'accesso SSH!<\/p>\n<p><\/p>\n<p>Ho recentemente letto che gli SSH tunnel sono funzionalit\u00e0 limitate rispetto a una normale VPN! Si pu\u00f2 semplicemente configurare OpenVPN o altre implementazioni di VPN, impostare l'infrastruttura e metterla a disposizione degli sviluppatori. \u00c8 davvero fantastico!<\/p>\n<p><\/p>\n<p>Fortunately, AWS, Google Cloud e altri offrono un anno di utilizzo gratuito, sfruttatelo! Costano pochissimo se vengono spenti quando non sono utilizzati. Mi sono sempre chiesto in quali casi avrei avuto bisogno di un server remoto come GCloud, e sembra che l'abbia trovato.<\/p>\n<p><\/p>\n<p>Come macchina virtuale locale, si pu\u00f2 utilizzare la stessa Alpine, che \u00e8 molto usata nei contenitori Docker. Oppure altre distribuzioni leggere per rendere pi\u00f9 veloce l'avvio della macchina.<\/p>\n<p><\/p>\n<p>In sintesi: si possono e si devono avviare database e altri componenti infrastrutturali 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 comunicare che l'uso delle immagini Docker non offre alcuna garanzia. Le immagini Docker servono solo per creare contenitori Docker. Se ti affidi a un'immagine Docker, significa che sei vincolato all'uso di contenitori Docker e rimarrai solo con quelli.<\/p>\n<p><\/p>\n<p>Hai mai visto sviluppatori di software che portano i loro prodotti esclusivamente in immagini Docker?<br \/>\nIl risultato della maggior parte dei prodotti \u00e8 un file binario per una determinata piattaforma, che viene semplicemente aggiunto all'immagine Docker, ereditando dalla piattaforma necessaria. Non ti sei mai chiesto perch\u00e9 ci siano cos\u00ec tante immagini simili su Docker Hub? Cerca, ad esempio, nginx, vedrai 100500 immagini da diverse persone. Queste persone non hanno sviluppato il vero nginx, ma hanno semplicemente aggiunto il nginx ufficiale alla loro immagine Docker e lo hanno arricchito con le proprie configurazioni per facilitare l'avvio dei contenitori. <\/p>\n<p><\/p>\n<p>In generale, si possono semplicemente archiviare in tgz, se qualcuno ha bisogno di avviarli in Docker, allora pu\u00f2 aggiungere tgz al Dockerfile, ereditare dall'ambiente necessario e creare funzionalit\u00e0 aggiuntive che non alterano l'applicazione in tgz. Chi creer\u00e0 l'immagine Docker sapr\u00e0 che cos'\u00e8 quel tgz e di cosa ha bisogno per funzionare. \u00c8 esattamente cos\u00ec che uso 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 registro Docker, utilizzer\u00f2 un S3 qualsiasi o semplicemente un sistema di archiviazione file come 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. Sono per lo pi\u00f9 aziende di prodotto. Hanno un'applicazione principale, un'unica stack tecnologico (forse un paio o 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 assemblare progetti all'interno di un contenitore Docker sui propri server? Perch\u00e9 non preparare semplicemente l'ambiente per l'assemblaggio, ad esempio scrivendo un playbook Ansible che installi le versioni necessarie di Node.js, PHP, JDK, copiando chiavi SSH, ecc. sul server dove avverr\u00e0 l'assemblaggio? <\/p>\n<p><\/p>\n<p>Ora capisco che \u00e8 un autogol, perch\u00e9 Docker non porta alcun profitto con la sua isolamento. I problemi con CI in Docker a cui ho dovuto far fronte:<\/p>\n<p><\/p>\n<ul>\n<li>\u00e8 di nuovo necessario un'immagine Docker per la build. bisogna cercare un'immagine o scrivere il proprio Dockerfile.<\/li>\n<li>90% delle volte \u00e8 necessario passare alcune chiavi SSH, dati sensibili che non si vogliono scrivere nell'immagine Docker.<\/li>\n<li>il container si crea e poi muore, tutti i cache si perdono con esso. la prossima build dovr\u00e0 riscaricare tutte le dipendenze del progetto, il che richiede tempo e non \u00e8 efficiente, e il tempo \u00e8 denaro.<\/li>\n<\/ul>\n<p><\/p>\n<p>Gli sviluppatori non costruiscono progetti in container Docker (un tempo ero un grande fan, non so come dire, mi dispiace per il mio passato xD). In Java c'\u00e8 la possibilit\u00e0 di avere pi\u00f9 versioni e cambiarle con un comando a quella che serve in questo momento. Lo stesso vale per Node.js, ci sono strumenti come nvm.<\/p>\n<p><\/p>\n<h2>Risultato<\/h2>\n<p><\/p>\n<p>Ritengo che Docker sia uno strumento potente e flessibile, e proprio per questo \u00e8 anche un suo difetto (suona strano, vero?). Grazie a esso, le aziende si \"abitutano\" facilmente, lo utilizzano dove serve e dove non serve. I developer avviano i loro container, un loro ambiente, e poi tutto questo fluisce nel CI, nella produzione. Il team DevOps scrive delle proprie soluzioni per avviare questi container.<\/p>\n<p><\/p>\n<p>Utilizza Docker solo nella <strong>fase finale<\/strong> del tuo flusso di lavoro, non portarlo nel progetto all'inizio. Non risolver\u00e0 i tuoi problemi aziendali. Semplicemente sposter\u00e0 i problemi su UN ALTRO livello e proporr\u00e0 soluzioni, mentre farai lavoro doppio.<\/p>\n<p><\/p>\n<p><strong><em>Quando \u00e8 necessario Docker<\/em><\/strong>: sono arrivato alla conclusione che Docker \u00e8 molto buono nell'ottimizzare il processo stabilito ma non nella costruzione della funzionalit\u00e0 di base.<\/p>\n<p><\/p>\n<p>Se decidi di usare Docker, allora:<\/p>\n<p><\/p>\n<ul>\n<li>stai estremamente attento<\/li>\n<li>non imporre l'uso di Docker agli sviluppatori<\/li>\n<li>localizza il suo utilizzo in un solo posto, non distribuirlo in tutti i repository Dockefile 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 dicono che funzioni molto bene con Ansible e permette di unificare il processo di creazione delle immagini (comprese le immagini Docker).<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.smashcompany.com\/technology\/docker-is-a-dangerous-gamble-which-we-will-regret\">anche su Docker, articolo interessante.<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>Grazie per aver letto, ti auguro soluzioni trasparenti nei tuoi 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.0.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.0.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 gioco o no? O alla fine s\u00ec?","description":"Ciao a tutti! Non vedo l'ora di tuffarmi subito nell'argomento, ma \u00e8 meglio iniziare con un piccolo racconto sulla 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}]}}