Cosa fa Docker e quando dovresti usarlo?

Contenuti

Docker è uno strumento per eseguire le tue applicazioni all'interno dei container. I contenitori racchiudono tutte le dipendenze e il codice di cui la tua applicazione ha bisogno per essere eseguita in un unico file, che funzionerà allo stesso modo su qualsiasi macchina.

Cos'è Docker?

Docker è simile nel concetto alle macchine virtuali, tranne che è molto più leggero. Invece di eseguire un sistema operativo completamente separato (che è un enorme sovraccarico), Docker esegue container, che utilizzano lo stesso sistema operativo host e virtualizzano solo a livello software.

Docker Engine funziona su Linux, Windows e macOS, e supporta Linux e Windows per i container Docker. Il sapore esatto di Linux non ha molta importanza; la maggior parte delle versioni di Linux eseguirà lo stesso kernel e differirà solo nel software utente. Docker può installare questo software utente nel contenitore, che ti consente di eseguire un contenitore CentOS su Ubuntu. Nonostante questo, non ho potuto, come esempio, esegui FreeBSD su Ubuntu, poiché i nuclei sono diversi.

L'immagine del contenitore Docker include solo ciò di cui la tua applicazione ha bisogno per essere eseguita. Se la tua applicazione utilizza nginx e Node.js, l'immagine del contenitore li includerà, ma non avrà il carico di tutte le altre applicazioni utente che generalmente troverai in Linux.

IMPARENTATO: Come installare Docker e Docker Compose su Linux

Perché Docker è così utile??

Docker utilizza lo stesso tipo di versioning e packaging forniti da strumenti come Git e NPM e ti consente di utilizzarlo per il software del tuo server.. Poiché il tuo contenitore è una singola immagine, rende molto facile tenere traccia delle diverse versioni del tuo contenitore. E siccome tutto è contenuto, gestire tutte le tue dipendenze è molto più semplice.

Con Docker, il tuo ambiente di sviluppo sarà esattamente lo stesso del tuo ambiente di produzione, ed esattamente uguale all'ambiente di sviluppo di tutti gli altri, aliviando el problema de¡está roto en mi máquina!”

Se desideri aggiungere un altro server al tuo cluster, non dovresti preoccuparti di riconfigurare quel server e reinstallare tutte le dipendenze di cui hai bisogno. Una volta creato un contenitore, puoi condividere il file contenitore con chiunque, e potrebbero facilmente far funzionare la loro applicazione con pochi comandi. Docker facilita la ejecución de varios servidores, specialmente con motori di orchestrazione come governatori e sciame docker.

Docker ti consente anche di organizzare il tuo codice per implementarlo in nuovi servizi. Supponiamo di avere un server web che stai utilizzando per la tua applicazione. Probabilmente hai molte cose installate su quel server, avere un server web nginx per ospitare contenuti statici, probabilmente hai un database per memorizzare alcune cose nel backend, forse hai un server API in esecuzione su Express. js anche. Idealmente, Li suddividerei in applicazioni separate da eseguire su server separati, ma lo sviluppo può essere complicato.

Docker aiuta a ripulire questo aspetto; puoi impacchettare il tuo server web ed eseguirlo con un contenitore nginx, puoi impacchettare il tuo server API ed eseguirlo con un container Node.js, e puoi impacchettare il tuo database ed eseguirlo nel suo contenitore (anche se questo è può essere non è la migliore idea, ma è fattibile). Puoi prendere questi tre container Docker ed eseguirli tutti sulla stessa macchina. Se devi cambiare server, è semplice come migrare quei contenitori su un nuovo server. Se hai bisogno di scalare, puoi spostare uno di quei contenitori su un nuovo server o distribuirlo su un cluster di server.

Docker può anche farti risparmiare denaro se desideri eseguire più applicazioni su un singolo VPS. Se ogni applicazione ha dipendenze diverse, è molto facile che il tuo server venga incasinato, come un piatto della cena del Ringraziamento con tutto mescolato dentro. Con Docker, puoi eseguire più contenitori separati con, come esempio, versioni separate di PHP, come un vassoio del pranzo del liceo con tutto separato.

Come si usa Docker??

In produzione, ci sono molti servizi per ospitare i container Docker, Compreso AWS ECS, Istanze di contenitore di Azure, Goccioline Docker DigitalOcean, e molti altri. Se il tuo provider non offre hosting Docker gestito, puoi sempre installarlo da solo sul tuo VPS.

Sviluppando, I container Docker sono semplici da eseguire e richiedono solo pochi comandi. Iniziare, dovrai installare il motore Docker sul tuo sistema operativo host. Per Windows e macOS, Puoi usare Desktop docker, ma per Linux, dovrai installare l'edizione della community di Docker dal tuo gestore di pacchetti. Per distribuzioni basate su Debian come Ubuntu, sarebbe:

sudo apt-get install docker

Con uno qualsiasi dei metodi di installazione, ora dovresti avere accesso a Docker dalla riga di comando. Per verificare che funzioni, può eseguire:

docker esegui ciao-mondo

Docker dovrebbe estrarre questa immagine del tutorial dal Mozzo mobile, un repository online di molte utili immagini di contenitori. Puoi usare molte di queste immagini come base per installare le tue applicazioni.

Creiamo un semplice server web basato su nginx. Nginx fornisce una build su Mozzo mobile che possiamo usare come punto di partenza. Crea una nuova directory per salvare i file e aprirla:

mkdir ~/dockertest && cd ~/dockertest

Qualsiasi modifica apportata all'immagine di base di nginx la faremo con un Dockerfile. I file Docker sono come i makefile per i contenitori, definen qué comandos ejecutar cuando Docker crea la nueva imagen con sus cambios. El Dockerfile simplemente se llama Dockerfile, sin extensión. Crea este archivo con touch Dockerfiley ábralo en un editor de texto. Pega esto en:

FROM nginx
COPY html /usr/share/nginx/html

La primera línea es un comando de Docker que le dice a Docker que base esta imagen en la imagen nginx del Hub. La segunda línea es otro comando que copia un directorio de esta carpeta local (~/dockertest/html) en la imagen de Docker, en esta circunstancia reemplazando la carpeta HTML por nginx.

Puoi eseguire molti comandi in Dockerfiles. Come esempio, se la tua applicazione deve installare dipendenze, può fare qualcosa come RUN cd src/ && npm install. Tutto ciò di cui la tua applicazione ha bisogno per avviare la sua installazione e iniziare a lavorare è impostato nel Dockerfile.

In realtà, non abbiamo fatto ./html directory ancora, quindi vai avanti e corri:

mkdir html && tocca html/index.html

Crea la directory e la voce HTML. Ha aperto index.html e incolla del codice HTML fittizio:

<!DOCTYPE html>
<html>
<corpo>
Ciao da nginx, all'interno di Docker! Dentro, il tuo computer?
</corpo>
</html>

Ora siamo pronti per cucinare la nostra immagine. Assicurati di essere alla radice del progetto (Su ~/dockertest, non nel html file) e corri:

docker build -t dockertest .

Il punto alla fine significa che useremo la directory corrente come punto di partenza. Docker dovrebbe trovare il Dockerfile e mettersi al lavoro. Nonostante questo, dovrebbero volerci solo pochi secondi, e quando sono pronto, puoi eseguirlo con:

docker run --name DockerTest -p 8080:80 -d dockertest

Questo avvierà un nuovo contenitore chiamato DockerTest, usando la imagendockertest” che creiamo. il -p la bandiera lega un porto locale a un porto all'interno del container, in questa circostanza associare la porta HTTP predefinita di nginx (puerto 80) al porto 8080 sul tuo computer locale. Aprire localhost:8080 nel tuo browser web, e dovresti vedere nginx in esecuzione.

Se vuoi una configurazione aggiuntiva, puoi modificare i file di configurazione di nginx inclusi COPY nginx.conf /etc/nginx/nginx.conf e scrivendo il tuo file di configurazione. Questo è più difficile da configurare rispetto alla modifica diretta del file di configurazione, poiché dovrai ricostruire l'immagine in ogni modifica. Ma per l'ulteriore vantaggio di poter prendere lo stesso contenitore che usi in fase di sviluppo e distribuirlo in produzione, è un compenso abbastanza equo.

Per un tutorial più dettagliato sul networking, distribuzione e containerizzazione di applicazioni esistenti, consigliamo leggendo questa guida.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.