Cos'è Docker ? Perché dovrei interessarmi di Docker? - 🏆 Managed Server

Cos’è Docker ? Perché dovrei interessarmi di Docker?

Print Friendly, PDF & Email

Cos’è Docker?

Docker è un nuovo approccio alla virtualizzazione. Se comprendi la virtualizzazione, sentiti libero di saltare la sezione successiva. In caso contrario, avrai bisogno di una conoscenza di base della virtualizzazione prima che possa aiutarti a capire Docker.

Cos’è la virtualizzazione?

Iniziamo con una metafora: immagina di possedere una casa. Hai un amico che ha bisogno di un posto. Hai alcune opzioni se vuoi aiutare il tuo amico.

  1. Sposta il tuo amico direttamente nella tua camera da letto con te. Questo potrebbe diventare un po scomodo.
  2. Costruisci una nuova casa per il tuo amico nella tua proprietà. Questa è una soluzione costosa.
  3. Invita il tuo amico a rimanere nella camera degli ospiti. Tra poco andremo da qualche altra parte …

La terza opzione è abbastanza buona. Sei in grado di aiutare il tuo amico senza costruirgli una nuova casa, ma allo stesso tempo mantenere separate le tue vite. Condividerai alcune risorse comuni come la cucina e il soggiorno, ma puoi entrare nelle tue camere da letto e chiudere la porta per avere un po’ di privacy.

La virtualizzazione è come impostare il tuo amico nella tua camera da letto di riserva. Immagina di voler eseguire un server web sul tuo computer. Tu vuoi tenerlo separato dal tuo sistema operativo e dalle tue applicazioni. Per fare ciò, è possibile eseguire una macchina virtuale contenente il server web. Funziona come un computer separato, ma utilizza il processore e la RAM del tuo computer. Quando si avvia la macchina virtuale, l’intero sistema operativo viene visualizzato in una finestra all’interno del sistema operativo.

Cosa c’è di diverso in Docker?

Docker è un modo diverso di fare virtualizzazione. Laddove una tipica macchina virtuale racchiude il sistema operativo con l’applicazione in esecuzione, Docker condivide il più possibile tra i sistemi virtualizzati. Questo fa sì che usino meno risorse quando vengono eseguite e le rende più facili da distribuire ad altri sviluppatori o al tuo ambiente di produzione.

Perché gli sviluppatori dovrebbero usare Docker?

Docker offre agli sviluppatori web alcuni fantastici superpoteri .

Facile condivisione degli ambienti di sviluppo

Se tu e io collaboreremo a un’app di Node, vorremmo assicurarci che entrambi abbiano il Nodo installato e che sia la stessa versione in modo che i nostri ambienti siano coerenti. Potremmo saltare questo e sperare per il meglio, ma potrebbe causarci problemi che potrebbero essere difficili da restringere. Le librerie e il nostro codice a volte si comportano in modo diverso tra le diverse versioni del nodo.

La soluzione è assicurarsi che entrambi abbiamo la stessa versione di Node, ma, se ognuno di noi ha già altri progetti sui nostri sistemi che richiedono altre versioni di Node, probabilmente vorremmo installare NVM che ci permetta di cambiare le versioni di Node facilmente. Possiamo quindi aggiungere un file .nvmrc alla radice del progetto specificando la versione comune che vogliamo.

Dobbiamo farlo solo una volta, quindi il nostro lavoro è finito. Per riassumere, ecco cosa dovevamo fare:

  1. Decidi su una versione del nodo.
  2. Installa NVM.
  3. Installa la nostra versione scelta di Node.
  4. Aggiungi un .nvmrc alla directory del progetto, impostando la versione corretta del nodo.
  5. Avvia l’app.

Funziona, ma è molto lavoro. Dobbiamo fare di nuovo la maggior parte di questo per chiunque altro vogliano unirsi a noi in questo progetto. Anche se adottiamo tutti questi passaggi, non possiamo ancora garantire che l’ambiente sia lo stesso per tutti gli sviluppatori. Le cose potrebbero rompersi tra gli sviluppatori che eseguono sistemi operativi diversi o addirittura versioni diverse dello stesso sistema operativo.

Docker ci consente di risolvere tutti questi problemi offrendo lo stesso ambiente di sviluppo a tutti gli sviluppatori. Ecco invece, con Docker, ecco cosa faremmo:

  1. Installa Docker.
  2. Scrivi un Dockerfile.
  3. Eseguire docker build -t <image-name>. Il nome dell’immagine può essere qualsiasi cosa tu scelga.
  4. Eseguire docker run -p 3000:3000 <image-name>. L’opzione “p” mappa una porta del contenitore in una porta locale. Ciò ti consente di collegare la porta 3000 sul tuo computer a cui verrà associata la porta 3000 sul container. Utilizza lo stesso nome immagine del punto 3.

Questo potrebbe non sembrare molto più semplice della configurazione Node / NVM (e in realtà non lo è). Esso non sono dotati di un vantaggio però. Dovrai installare Docker una sola volta indipendentemente dal tuo stack tecnologico. Certo, dovrai solo installare Node una volta sola (a meno che tu non abbia bisogno di più versioni), ma, quando sei pronto per lavorare su un’app che si trova su uno stack diverso, dovrai installare tutto il software che ti serve. Con Docker, dovrai semplicemente scrivere un file Dockerfile diverso (o un file Docker Compose a seconda della complessità della tua app).

Il Dockerfile è molto semplice: è un file di testo chiamato “Dockerfile” senza un’estensione. Diamo un’occhiata a un Dockerfile che potresti utilizzare per una semplice app Node.

# This Docker image will be based on the Node 11.6 image
FROM node:11.6.0# Install dependencies
COPY package*.json ./
RUN npm install# Copy the node app from the host into the image at /app
COPY . /app# Expose port 3000 and start the app
EXPOSE 3000
CMD npm start

Questo Dockerfile è scritto per un’app nodo che ascolta sulla porta 3000 e inizia con il npm startcomando. Inseriscilo nel repository del tuo progetto e i nuovi sviluppatori on-boarding diventano abbastanza semplici e al 100% coerenti: ogni sviluppatore ottiene sempre lo stesso ambiente.

Sviluppare sullo stesso ambiente della produzione

Una volta installata l’app in un ambiente di sviluppo Docker, è possibile spedire l’intero container direttamente alla produzione. Se pensi che sia un problema affrontare le incongruenze tra due sviluppatori, aspetta solo che tu scriva il codice che funziona sulla tua macchina solo per far sì che nonfunzioni nella produzione . È estremamente frustrante.

Hai tonnellate di opzioni per la distribuzione di container Docker alla produzione. Eccone alcuni:

Mi piace l’approccio di Heroku perché è l’unico che ti permette semplicemente di far salire il tuo progetto con un Dockerfile per farli girare. Gli altri fanno molti altri passi come fare il push  dell’immagine Docker in un repository. I passaggi extra non sono la fine del mondo, ma non sono necessari.

Che dire delle app più complesse?

A causa della filosofia di Docker (un processo per contenitore), la maggior parte delle app richiederà più contenitori . Ad esempio, un sito WordPress dovrebbe consistere in un contenitore per il server Web che esegue PHP e un contenitore per il database MySQL. Ciò significa che hai bisogno di un modo in cui i contenitori possano parlare. Questo è chiamato orchestrazione di container .

Se è possibile eseguire tutti i contenitori su un singolo host, Docker Compose soddisferà probabilmente le esigenze di orchestrazione. È incluso quando installi Docker ed è facile da imparare. Ti consente di avviare più contenitori contemporaneamente e di creare reti tra loro in modo che possano parlare tra loro. Questo è il modo più semplice e veloce per orchestrare più contenitori.

Se devi orchestrare contenitori sparsi su più host, Kubernetes è la soluzione prevalente. Molti host che supportano le distribuzioni Docker offrono Kubernetes per l’orchestrazione.

Quick Wins da Understanding Docker

Potrebbe non sembrare importante ora, ma archivia questa conoscenza per la prima volta in cui ti imbatti in un problema causato dalle differenze negli ambienti. Lei non vuole che accada di nuovo. Imparando Docker, sarai in grado di garantire un ambiente coerente per la tua app , indipendentemente da dove è in esecuzione o da chi la sta eseguendo. Ciò significa risultati coerenti su cui voi, i vostri clienti e i vostri datori di lavoro possono fare affidamento.

17279

Vuoi ricevere i migliori consigli ?

Ogni settimana nuovi consigli e novità !

Hai dei dubbi? Non sai da dove partire? Contattaci


Abbiamo tutte le risposte alle tue domande per aiutarti nella giusta scelta.

Scrivici

Chatta direttamente con il nostro supporto tecnico.

0256569681

Chiamaci subito negli orari d’ufficio 9:30 – 19:30

Ricevi assistenza

Apri un ticket direttamente nell’area di supporto.

Conosci i problemi di performance del tuo sito ?Analisi Gratuita
+ +

I migliori trucchi

per il tuo Hosting ?

FREE

Iscriviti gratuitamente per nuovi articoli e suggerimenti !

Proseguendo accetti la privacy policy

Torna su