Torna al blog

Lavorare con i Docker Data Volumes su Ubuntu 20.04

Lavorare con i Docker Data Volumes su Ubuntu 20.04

Introduzione

Volumi di dati Docker è un concetto importante quando si containerizzano le applicazioni. Conoscere questo concetto è fondamentale per garantire la migliore esperienza della propria applicazione containerizzata, insieme a una persistenza affidabile e alla gestione dei dati. Tuttavia, sebbene questo concetto sia importante, è anche confuso e complesso per molti sviluppatori. È importante che gli sviluppatori e gli specialisti DevOps siano in grado di capire come configurare i volumi di dati Docker, comprenderne l'uso corretto, conoscere i diversi tipi di volumi e quale tipo selezionare per la propria applicazione.

Questo tutorial si concentra su spiegare il concetto e l'utilizzo dei volumi di dati Docker. Dopo aver completato questo tutorial, avrai imparato a configurare e lavorare con qualsiasi tipo di volume di dati Docker.

Prerequisiti

Per seguire questo tutorial, avrai bisogno dei seguenti elementi:

  1. Ubuntu installato. Dai un'occhiata al nostro Come configurare il server Ubuntu 18.04 tutorial per un rapido riferimento.
  2. Utente Ubuntu con privilegi sudo. Questo passaggio può essere complicato, specialmente se non hai familiarità con Linux. Leggi Configurazione del file Sudoers di Linux per una guida dettagliata.
  3. Docker installato su Ubuntu. Per installare Docker su Ubuntu puoi seguire il nostro Come installare & utilizzare Docker su Ubuntu nel cloud pubblico blog.

Sebbene questo tutorial si concentri sulla gestione di Docker su Ubuntu, i comandi docker sono applicabili a tutti i sistemi operativi con Docker installato.

Capire come funzionano i container Docker

Per comprendere appieno i volumi di dati Docker, è necessario sapere come funzionano i container Docker. In questa sezione forniamo una panoramica delle nozioni di base per i nuovi utenti di Docker. Se sai già come funziona Docker o sei un utente esperto, puoi saltare questa sezione e iniziare con i volumi di dati.

I container Docker consentono di eseguire un'applicazione sopra il sistema operativo host installando la piattaforma Docker. Poiché la piattaforma Docker è installata sul sistema operativo host, si forma un'astrazione tra la macchina host e l'applicazione guest. A differenza di una macchina virtuale, un container Docker condivide il suo kernel Linux con il sistema operativo host. Poiché Docker non richiede l'installazione di alcun sistema operativo aggiuntivo sopra la macchina host, le applicazioni Docker sono leggere e accessibili su tutte le macchine host, purché Docker sia installato su tale macchina host.

Poiché non vi è alcun sistema operativo guest aggiuntivo, la piattaforma Docker condivide le risorse con la macchina host. Avviare l'applicazione Docker è rapido, ma la complessità sorge quando è necessario condividere le risorse. Docker non dispone di memoria o storage propri per la persistenza dei dati. Queste risorse devono provenire dalla macchina host. Le persone abituate a utilizzare macchine virtuali trovano difficile questo processo di condivisione e gestione delle risorse. Non avere una conoscenza adeguata può portare a risultati imprevisti e indesiderati. Sebbene questo tutorial presupponga che tu abbia familiarità con l'ecosistema Docker, sentiti libero di consultare il nostro tutorial dettagliato Cos'è Docker? Una panoramica dell'ecosistema Docker per un rapido ripasso.

Persistenza dei dati tramite i volumi di dati Docker

Quando si lavora con Docker, non è possibile creare direttamente un volume al suo interno. Pertanto, per memorizzare i dati dobbiamo creare un container di volume Docker con un volume collegato ad esso. Per connettere la nostra applicazione Docker con questo container di volume di dati, utilizziamo il comando --volume-from di Docker per ottenere il container e collegarlo alla nostra applicazione.

Esamineremo il processo passo dopo passo:

  1. Innanzitutto, crea un nuovo container chiamato, my-container eseguendo il comando seguente:
    Docker Data Volumes 1 docker create my-container
    Questo creerà un nuovo container nella cartella /tmp . È possibile modificare la directory della cartella in base alle esigenze.
  2. Ora che il tuo container di dati è pronto, puoi scriverci sopra eseguendo un nuovo container Ubuntu con il flag --volume-from e poi eseguendo bash. Qualsiasi cosa scriviamo in tmp la directory verrà salvata nella cartella /tmp della nostra macchina host:
    Docker Data Volumes 2 Run docker container
    L'opzione di riga di comando -t richiama un terminale dall'interno del container. L'opzione -i rende la connessione interattiva. Al prompt di bash per il container Ubuntu, crea un file in /tmp:
  3. Infine, esci da questa bash eseguendo il comando exit . Successivamente, esegui il comando seguente:
    Docker Data Volumes 3 New container sample file
    Troverai il tuo sample_file in questa directory. Non ci sono restrizioni sul numero di volumi da specificare. Puoi aggiungere tutti i volumi che desideri utilizzando il flag --volumes-from . Puoi anche creare tutti i container di volumi di dati che desideri.

Accesso ai dati tra l'host e il container Docker

Per i lettori esperti di virtualizzazione, questa opzione è simile all'opzione della cartella condivisa nelle macchine virtuali. Qui, invece di creare un container data-only , eseguiamo la nostra applicazione Docker utilizzando l'immagine Docker e sovrascriviamo una delle sue directory con il contenuto di una directory sul sistema host.

Uno scenario comune consiste nel salvare i file di log nella macchina host. Questo potrebbe essere necessario per poter analizzare questi file all'occorrenza senza dover entrare nella macchina. Per questo scenario, supponiamo che tu stia utilizzando l' immagine Docker Nginx e desideri memorizzare i suoi file di log nella macchina host. L'immagine Docker di Nginx scrive i log nella directory /var/log/nginx , ma questa è /var/log/nginx all'interno del container Docker Nginx. Pertanto, questa posizione non è accessibile alla macchina host.

Per raggiungere il nostro obiettivo, dovremmo creare una cartella condivisa per memorizzare i log tra la macchina host e l'immagine Docker Nginx. Di seguito illustreremo questo processo in una semplice guida passo-passo:

  1. Innanzitutto, crea una directory nella tua macchina host in cui desideri memorizzare i log:
    Quindi, avvia il tuo container eseguendo il comando seguente:
    Docker run nginx container
  2. Questo comando run accetta alcuni argomenti, quindi scomponiamolo per capire meglio:
    • -p 5000:80: Configura un port forwarding. Il container Nginx è in ascolto sulla porta 80 per impostazione predefinita, e questo mappa la porta del container Nginx 80 sulla porta 5000 del sistema host.
    • -d: Scollega il processo ed eseguilo in background.
    • -v ~/my-nginxlogs:/var/log/nginx: Colleghiamo la directory /var/log/nginx dall'interno del container Nginx alla directory /my-nginxlogs sulla macchina host. Questo : divide il percorso dell'host dal percorso del container. Il percorso dell'host viene sempre prima.

Ora che il nostro container Nginx è in esecuzione, controlla innanzitutto se il server Nginx è attivo sulla porta della nostra macchina host 5000 aprendo il browser web e visitando l'URL: http://localhost:5000. Una volta visualizzata la pagina di benvenuto, il tuo server Nginx è pronto e sta creando i log nella sua cartella /var/log/nginx .

Se apri la cartella della tua macchina host /my-nginxlogs , vedrai qui i file di log del container Docker Nginx. Se apporti modifiche alla cartella /my-nginxlogs sulla macchina host, mentre il container Nginx è in esecuzione, le modifiche si rifletteranno anche nella cartella del container /var/log/nginx .

Conclusione

In questo tutorial, abbiamo adottato un approccio completo per comprendere i volumi di dati Docker. Abbiamo esaminato la creazione di volumi per la tua applicazione, la condivisione dei dati tra l'host e il container Docker, i tipi di dati e la persistenza dei dati. Questo ti aiuterà a rendere persistenti i dati nelle tue applicazioni containerizzate, oltre a gestire lo stato e la configurazione dell'applicazione.

Per saperne di più su Docker, dai un'occhiata ai seguenti tutorial dal nostro blog:

Buon computing!

author

Pranay Kapgate

Autore · CloudSigma

Preslav Dobrev è un designer creativo presso CloudSigma, con un focus su un'identità aziendale coerente attraverso l'uso di canali di marketing tradizionali e innovativi. È abile nel fondere la visione artistica con il marketing strategico per creare narrazioni di brand di grande impatto.

Commenti

Ancora nessun commento. Scrivi il primo.