GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Che cos'è un contenitore Docker:una guida introduttiva per principianti

Vuoi sapere cos'è un container Docker? Scopri tutto ciò che devi sapere in questo articolo con un linguaggio di facile comprensione.

La popolarità di Docker non è senza motivo. Ha cambiato notevolmente il modo in cui gli sviluppatori affrontano lo sviluppo delle applicazioni.

È diventato uno standard nel settore IT per il confezionamento, l'implementazione e l'esecuzione di applicazioni distribuite con facilità.

Il vantaggio principale di Docker è che consente agli utenti di impacchettare un'applicazione con tutte le sue dipendenze in un'unità standard chiamata container.

Poiché Docker è una piattaforma di containerizzazione, è necessario comprendere la storia dietro la containerizzazione.

La storia prima della containerizzazione

Prima che entrasse in gioco la containerizzazione, il modo migliore per isolare e organizzare le applicazioni e le loro dipendenze era posizionare ciascuna applicazione nella sua macchina virtuale.

Queste macchine eseguono più applicazioni sullo stesso hardware fisico e questo processo non è altro che  virtualizzazione .

Ma la virtualizzazione presentava alcuni inconvenienti, come le macchine virtuali di dimensioni ingombranti. Inoltre, l'esecuzione di più macchine virtuali porta a prestazioni instabili.

Il processo di avvio richiede solitamente molto tempo e le macchine virtuali non risolvono problemi come portabilità, aggiornamenti software o integrazione continua e distribuzione continua.

Questi inconvenienti hanno portato all'emergere di una nuova tecnica chiamata containerizzazione .

La containerizzazione è un tipo di virtualizzazione che porta la virtualizzazione a livello di sistema operativo.

Mentre la virtualizzazione porta l'astrazione all'hardware, la containerizzazione porta l'astrazione al sistema operativo.

Contenitori e macchine virtuali

I termini “Contenitori” e “Macchine Virtuali” sono spesso usati in modo intercambiabile; tuttavia, questo è spesso frainteso.

Ma entrambi sono solo metodi diversi per fornire la virtualizzazione del sistema operativo.

Macchine virtuali

Macchine virtuali generalmente includono un intero sistema operativo, pacchetti e, se necessario, alcune applicazioni.

Ciò è possibile grazie a un Hypervisor, che fornisce la virtualizzazione hardware alla macchina virtuale.

Ciò consente a un singolo server di eseguire molti sistemi operativi autonomi come guest virtuali. In generale, una macchina virtuale è un sistema che si comporta esattamente come un computer.

Contenitori

Contenitori sono simili alle macchine virtuali, tranne per il fatto che i container non sono interi sistemi operativi. I contenitori generalmente includono solo i pacchetti e le applicazioni del sistema operativo necessari.

In genere non contengono un intero sistema operativo o la virtualizzazione dell'hardware; questi sono "leggeri".

Un contenitore viene generalmente utilizzato per isolare un processo in esecuzione all'interno di un singolo host per garantire che i processi isolati non possano interagire con altri processi all'interno dello stesso sistema:contenitori di processi sandbox l'uno dall'altro.

Per dirla semplicemente, puoi pensare a un container Docker come a un equivalente leggero di una macchina virtuale.

Docker consente di creare e lavorare con i container nel modo più efficiente possibile.

Motivi per utilizzare i contenitori Docker

  • I container non hanno SO guest e utilizzano il sistema operativo dell'host. Pertanto, condividono le librerie e le risorse pertinenti come e quando necessario.
  • Isolamento delle app:se desideri eseguire più applicazioni su un server, mantenere i componenti di ciascuna applicazione in contenitori separati eviterà problemi con la gestione delle dipendenze.
  • L'elaborazione e l'esecuzione delle applicazioni sono molto veloci poiché i binari e le librerie di container specifici delle applicazioni vengono eseguiti sul kernel host.
  • L'avvio di un container richiede solo una frazione di secondo.
  • I container sono leggeri e più veloci delle macchine virtuali.

Cos'è un Docker Container?

Docker è una piattaforma che impacchetta un'applicazione e tutte le sue dipendenze sotto forma di contenitori.

Utilizza i container per semplificare la creazione, la distribuzione e l'esecuzione delle applicazioni. Docker associa l'applicazione e le sue dipendenze all'interno di un contenitore.

I container consentono a uno sviluppatore di impacchettare un'applicazione con tutte le parti di cui ha bisogno, come librerie e altre dipendenze, e spedire il tutto come un unico pacchetto.

Diciamo che devi creare un'applicazione. Per rendere l'applicazione disponibile al pubblico, è necessario un posto dove ospitarla. In passato, avresti dovuto costruire il tuo computer.

Quindi, dovresti configurare un servizio Web dedicato chiamato "server", un computer dedicato all'hosting di siti Web o servizi Web.

Tuttavia, la tua applicazione potrebbe avere solo una dimensione approssimativa di 300 Megabyte per cominciare.

Quindi, perché vorresti una "macchina virtuale", un ambiente virtualizzato risultante dalla virtualizzazione, che ha una dimensione di oltre 1 GB quando la tua applicazione è molto inferiore a quella?

Il concetto di "contenitore" arriva per risolvere questo problema. Docker lo fa nel modo seguente. Invece di ospitare ogni sistema operativo per applicazione, è possibile condividere alcune risorse comuni e c'è qualcosa chiamato "motore docker", che si trova sopra un sistema operativo.

L'adozione di Docker, o container, significa che le applicazioni possono essere distribuite o annullate più velocemente. Avvia e interrompi più rapidamente, passa a un'altra "immagine" più velocemente, elabora e fai molte cose più velocemente.

Ma sarebbe utile conoscere gli elementi e gli strumenti essenziali dell'ecosistema Docker all'inizio.

File Docker

Un Dockerfile è un insieme di istruzioni precise che indicano come creare una nuova immagine Docker, impostando le impostazioni predefinite per i contenitori eseguiti in base ad essa e un po' di più.

È un documento di testo che contiene tutti i comandi che un utente può chiamare sulla riga di comando per assemblare un'immagine.

Quindi, Docker può creare immagini automaticamente leggendo le istruzioni da un Dockerfile.

Immagine Docker

Docker Image può essere paragonato a un modello di sola lettura utilizzato per creare contenitori Docker. In altre parole, un'immagine è un progetto da cui è possibile avviare un numero arbitrario di contenitori nuovi di zecca.

Nessun "comando attualmente in esecuzione" viene salvato in un'immagine. Quando crei un container, è come avviare una macchina dopo che è stata spenta.

Contenitore Docker

È un'istanza in esecuzione di un'immagine Docker poiché contiene l'intero pacchetto necessario per eseguire l'applicazione.

Immagina di voler eseguire un comando isolato da tutto il resto del sistema. Dovrebbe solo accedere esattamente alle risorse a cui è consentito e non sa che c'è nient'altro sulla macchina.

Il processo in esecuzione all'interno di un container pensa che sia l'unico che vede una distribuzione Linux barebone le cose descritte nell'immagine.

Una macchina che esegue il container non dovrebbe preoccuparsi troppo di ciò che c'è dentro e all'app docker non importa se si trova su un cluster Kubernetes o su un singolo server:sarà comunque in grado di funzionare.

Un container può eseguire più di un singolo processo alla volta. Quindi, ad esempio, puoi impacchettare molti servizi in un unico contenitore ed eseguirli fianco a fianco.

Quando un container Docker viene eliminato, il riavvio dell'immagine riavvierà il container senza nessuna delle modifiche apportate al container precedentemente in esecuzione:tali modifiche andranno perse.

Volume Docker

Le immagini non cambiano. Puoi crearne di nuovi, ma il gioco è fatto. I container, d'altra parte, non lasciano nulla alle spalle per impostazione predefinita. Pertanto, tutte le modifiche apportate a un contenitore vengono perse non appena viene rimosso.

Per salvare (mantenere) i dati e condividere i dati tra contenitori, Docker ha escogitato il concetto di volumi . Molto semplicemente, i volumi sono directory (o file) al di fuori del file system predefinito ed esistono come directory e file standard sul file system host.

In altre parole, i volumi Docker ci hanno consentito di rendere persistenti i dati e condividerli tra contenitori.

Conclusione

Ci auguriamo che questo articolo ti abbia aiutato a comprendere i fondamenti di base di Docker su cosa sono Docker e Docker container e come ha rivoluzionato lo sviluppo del software.

Con le conoscenze di cui sopra, dovresti avere una solida conoscenza di cosa tratta Docker in fondo.

Puoi visitare il sito web del progetto o fare riferimento alla documentazione ufficiale per ulteriori informazioni su Docker.


Docker
  1. Come eseguire Nginx in un contenitore Docker:una guida passo passo

  2. Che cos'è Docker (e contenitori Linux?)

  3. Come condividere i dati tra contenitori Docker

  4. Come elencare i contenitori Docker

  5. Introduzione alla virtualizzazione:una guida completa per principianti

Comandi Docker per la gestione del ciclo di vita dei container (Guida definitiva)

Guida per principianti alla politica di riavvio di Docker

Cosa fare se un container Docker esce immediatamente

Come rinominare o rinominare i contenitori Docker

ctop – Interfaccia simile a quella superiore per il monitoraggio dei contenitori Docker

Guida per principianti al mondo Docker