GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Cos'è Docker?

Introduzione

Docker è una delle piattaforme basate su container più popolari che attira l'attenzione di molti team di sviluppo. Sempre più aziende stanno passando a Docker grazie alla sua affidabilità, prestazioni e funzionalità.

Pertanto, è essenziale comprendere questo software di containerizzazione open source e i componenti sottostanti che lo alimentano.

In questo articolo imparerai cos'è Docker, quali sono i componenti più importanti di Docker e i pro ei contro dell'utilizzo della piattaforma.

Cos'è Docker?

Docker è una piattaforma di containerizzazione open source utilizzata per lo sviluppo, la distribuzione e la gestione di applicazioni in ambienti virtualizzati leggeri chiamati container.

Viene utilizzato principalmente come piattaforma di sviluppo software per lo sviluppo di applicazioni distribuite che funzionano in modo efficiente in ambienti diversi. Rendendo il sistema software indipendente, gli sviluppatori non devono preoccuparsi di problemi di compatibilità. La creazione di pacchetti di app in ambienti isolati (contenitori) semplifica inoltre lo sviluppo, la distribuzione, la manutenzione e l'utilizzo delle applicazioni.

Poiché Docker utilizza la virtualizzazione per creare contenitori per l'archiviazione di app, il concetto potrebbe sembrare simile alle macchine virtuali. Sebbene entrambi rappresentino ambienti virtuali isolati utilizzati per lo sviluppo del software, esistono importanti differenze tra contenitori e macchine virtuali. La distinzione più importante è che i container Docker sono più leggeri, più veloci e più efficienti in termini di risorse rispetto alle macchine virtuali.

Installare Docker è semplice. Per istruzioni dettagliate, controlla:

Come installare Docker su UbuntuCome installare Docker su CentOSCome installare Docker su Debian

Cosa sono i container?

I container Docker sono ambienti di runtime virtualizzati leggeri per l'esecuzione di applicazioni. Ogni contenitore rappresenta un pacchetto di software che contiene codice, strumenti di sistema, runtime, librerie, dipendenze e file di configurazione necessari per l'esecuzione di un'applicazione specifica. Sono indipendenti e isolati dall'host e da altre istanze in esecuzione sull'host.

I contenitori sono basati su immagini Docker. Puoi creare un contenitore eseguendo un'immagine su Docker Engine. Poiché questi sono i termini Docker più comuni, assicurati di aver compreso la differenza tra le immagini Docker e i contenitori Docker.

Lo stesso hardware può ospitare più container. A differenza delle macchine virtuali, i container vengono virtualizzati a livello di applicazione. Pertanto, condividono il kernel del sistema operativo con l'host e virtualizzano un sistema operativo su di esso. Ciò significa che utilizzi meno risorse e mantieni ambienti virtuali leggeri, facili e veloci da configurare.

Oltre ad essere indipendenti dal sistema, i container sono facili e veloci da avviare, configurare, aggiungere, interrompere e rimuovere. Gli sviluppatori possono lavorare sulla stessa applicazione in ambienti diversi sapendo che ciò non influirà sulle sue prestazioni. Inoltre, possono condividere i dati tra contenitori utilizzando i volumi di dati.

Per massimizzare le prestazioni dei container, assicurati di implementare le best practice per i container Docker.

A cosa serve Docker?

Docker viene utilizzato per:

  • Esecuzione di più carichi di lavoro con meno risorse.
  • Isolamento e segregazione delle applicazioni.
  • Standardizzazione degli ambienti per garantire la coerenza tra i cicli di sviluppo e rilascio.
  • Snellimento del ciclo di vita dello sviluppo e supporto dei flussi di lavoro CI/CD.
  • Sviluppo di carichi di lavoro altamente portatili che possono essere eseguiti su piattaforme multi-cloud.

Inoltre, viene utilizzato come:

  • Un'alternativa conveniente alle macchine virtuali.
  • Un sistema di controllo della versione per un'applicazione.

Breve storia di Docker

Docker è stato introdotto come progetto open source nel marzo 2013 in occasione di PyCon. Prima di concentrarsi sui container, il progetto è iniziato come una soluzione Platform as a Service chiamata DotCloud, nel 2008. Tuttavia, molti sviluppatori hanno mostrato un grande interesse in particolare per la tecnologia alla base di DotCloud:i container software.

Da allora, Docker ha attirato l'attenzione di molti fornitori di tecnologia e aziende di alto profilo.

Componenti principali Docker

Lo strumento è costituito da più componenti, ciascuno dei quali svolge un ruolo importante nella piattaforma.

Motore Docker

Il Docker Engine (DE) è installato sulla macchina host e rappresenta il cuore del sistema Docker. È un sistema di runtime leggero e la tecnologia client-server sottostante che crea e gestisce i container.

Docker Engine è costituito da tre componenti:

  • Server - il demone Docker (dockerd), che si occupa della creazione e della gestione dei container.
  • API Riposo - stabilisce la comunicazione tra i programmi e Docker e indica a Docker cosa fare.
  • Interfaccia a riga di comando (CLI) - utilizzato per eseguire i comandi Docker.

Immagini Docker

Le immagini Docker sono modelli utilizzati per la creazione di contenitori. Come gli snapshot per le macchine virtuali, le immagini Docker sono file immutabili di sola lettura costituiti da codice sorgente, librerie, dipendenze, strumenti e qualsiasi altro file necessario per l'esecuzione di un'applicazione. Ogni immagine viene creata da un Dockerfile, che contiene istruzioni specifiche per la creazione di una particolare immagine Docker.

Dopo aver imparato a creare immagini Docker da Dockerfiles, puoi creare immagini e contenitori personalizzati in modo più semplice e veloce.

Oltre a velocizzare le build di Docker, le immagini sono utili anche per aumentare la riutilizzabilità e ridurre sostanzialmente l'utilizzo del disco. Dal momento che vuoi mantenere i tuoi contenitori leggeri e veloci, è fondamentale mantenere piccole immagini. L'utilizzo di una base di immagini più leggera, l'eliminazione di livelli non necessari e l'utilizzo del file .dockerignore sono solo alcuni dei modi per mantenere piccole le immagini Docker.

File Docker

Un Dockerfile è uno script che consiste in una serie di istruzioni su come creare un'immagine Docker. Queste istruzioni includono la specifica del sistema operativo, delle lingue, delle variabili di ambiente, dei percorsi dei file, delle porte di rete e di altri componenti necessari per eseguire l'immagine. Tutti i comandi nel file vengono raggruppati ed eseguiti automaticamente.

Un'immagine ha più livelli. Dopo aver eseguito un'immagine Docker per creare un contenitore, viene aggiunto un nuovo livello di lettura-scrittura. Questo è talvolta indicato come il livello del contenitore. Il livello aggiuntivo ti consente di apportare modifiche all'immagine di base, che puoi impegnare a creare una nuova immagine Docker per un uso futuro.

Hub Docker

Docker Hub è il più grande repository basato su cloud di immagini container fornito da Docker. Fornisce oltre 100.000 immagini disponibili per l'uso create da progetti open source, fornitori di software e comunità Docker.

La piattaforma ti consente di spedire rapidamente le tue applicazioni ovunque, collaborare con i compagni di squadra e automatizzare le build per un'integrazione più rapida in una pipeline di sviluppo.

Come GitHub, gli sviluppatori eseguono il push e il pull di immagini di container da Docker Hub e decidono se mantenerle pubbliche o private.

Volumi Docker

Invece di aggiungere nuovi livelli a un'immagine, una soluzione migliore per preservare i dati prodotti da un container in esecuzione consiste nell'usare i volumi Docker. Questo utile strumento consente agli utenti di salvare i dati, condividerli tra contenitori e montarli su nuovi. I volumi Docker sono indipendenti dal ciclo di vita del contenitore poiché vengono archiviati nell'host.

Esistono diversi modi per creare e montare un volume Docker durante l'avvio di un container. Scopri di più nei volumi Docker:come creare e iniziare.

Composizione Docker

Quando si eseguono e si gestiscono più container contemporaneamente, Docker Compose è uno strumento utile progettato per semplificare il processo. Stringe più contenitori necessari per lavorare insieme e li controlla tramite un unico comando coordinato.

Docker Compose viene utilizzato per avviare, eseguire, comunicare e chiudere i contenitori con un comando. Questo viene fatto utilizzando un file YAML che configura i servizi dell'applicazione.

Installa Docker Compose su CentOSInstalla Docker Compose su Ubuntu

Docker Desktop

Docker Desktop, precedentemente noto come Docker per Windows e Docker per Mac, è un'applicazione che consente di iniziare a creare ed eseguire container su Windows e Mac in pochi minuti. È un modo semplice per installare e configurare l'intero ambiente di sviluppo Docker. Include Docker Engine, Docker Compose, client Docker CLI, Docker Content Trust, Kubernetes e Credential Helper.

Lo strumento viene utilizzato per creare e condividere applicazioni e microservizi containerizzati in più linguaggi e framework, su qualsiasi piattaforma cloud.

Per ulteriori informazioni, consulta la documentazione ufficiale di Docker su Docker Desktop.

Vantaggi Docker

  • Coerenza . Docker garantisce l'affidabilità che la tua app venga eseguita allo stesso modo in più ambienti. Gli sviluppatori che lavorano su macchine e sistemi operativi diversi possono lavorare insieme sulla stessa applicazione senza problemi di ambiente.
  • Automazione . La piattaforma consente di automatizzare attività noiose e ripetitive e pianificare i lavori senza intervento manuale.
  • Distribuzioni più rapide . Poiché i contenitori virtualizzano il sistema operativo, non c'è tempo di avvio all'avvio delle istanze dei contenitori. Pertanto, puoi eseguire distribuzioni in pochi secondi. Inoltre, puoi condividere contenitori esistenti per creare nuove applicazioni.
  • Supporto di CI/CD . Docker funziona bene con le pratiche CI/CD in quanto velocizza le implementazioni, semplifica gli aggiornamenti e consente ai compagni di squadra di lavorare insieme in modo efficiente.
  • Rollback e controllo della versione dell'immagine . Un contenitore si basa su un'immagine Docker che può avere più livelli, ognuno dei quali rappresenta modifiche e aggiornamenti sulla base. Questa funzionalità non solo accelera il processo di compilazione, ma fornisce anche il controllo della versione sul contenitore. Ciò consente agli sviluppatori di tornare a una versione precedente, se necessario.
  • Modularità . I container sono ambienti virtuali indipendenti e isolati. In un'applicazione multi-container, ogni container ha una funzione specifica. Segregando l'app, gli sviluppatori possono facilmente lavorare su una parte particolare senza rimuovere l'intera app.
  • Efficienza delle risorse e dei costi . Poiché i container non includono i sistemi operativi guest, sono molto più leggeri e più piccoli delle macchine virtuali. Occupano meno memoria e riutilizzano i componenti grazie ai volumi di dati e alle immagini. Inoltre, i container non richiedono server fisici di grandi dimensioni poiché possono essere eseguiti interamente nel cloud.

Svantaggi di Docker

  • Nessuna interfaccia grafica . Docker non è la scelta migliore se desideri eseguire app che richiedono un'interfaccia grafica. È principalmente per l'hosting di applicazioni eseguite sulla riga di comando.
  • Problemi di sicurezza . Sebbene Docker fornisca sicurezza isolando i contenuti dall'host e l'uno dall'altro, esistono determinati rischi per la sicurezza specifici di Docker. Durante l'utilizzo dei container possono sorgere molti potenziali problemi di sicurezza, quindi assicurati di adottare le migliori pratiche di sicurezza Docker che possono aiutarti a prevenire attacchi e violazioni dei privilegi.
  • Curva di apprendimento . Anche gli sviluppatori esperti con l'infrastruttura VM hanno bisogno di tempo per abituarsi ai concetti Docker e al loro funzionamento. Se passi a Docker, assicurati di prendere in considerazione la curva di apprendimento necessaria.

Ubuntu
  1. Qual è la differenza tra i container LXC, LXD e Docker

  2. Come usare Docker Compose

  3. Come collegare i contenitori Docker

  4. Cosa c'è di nuovo in Docker Compose v2?

  5. Che cos'è Podman e in che cosa differisce da Docker?

Traefik per i contenitori Docker su Ubuntu

Che cos'è un manifesto di immagine Docker?

Come eseguire i contenitori Docker

Come rimuovere i contenitori Docker

Come fermare i container Docker

Cosa fare se un container Docker esce immediatamente