Introduzione
In genere, i container Docker vengono eseguiti solo per un certo periodo di tempo – il tempo necessario per eseguire il comando. I dati disponibili all'interno del container sono accessibili solo dall'interno del container durante il runtime.
I volumi Docker possono essere utilizzati per accedere facilmente ai file e memorizzarli per un periodo più lungo. Ad esempio, se hai un server web Nginx e desideri memorizzare i log per i controlli, puoi utilizzare un volume Docker per memorizzare i log del container nella tua macchina host.
In questo tutorial, imparerai come condividere i dati tra l'interno del container Docker e la macchina host.
Prerequisiti
Per questo tutorial, avrai bisogno dei seguenti prerequisiti:
- Server Ubuntu 18.04: puoi facilmente creare un nuovo server CloudSigma con l'immagine Ubuntu 18.04, seguendo il nostro utile tutorial.
- Docker – Puoi installare Docker usando il nostro tutorial su come configurare Docker su Ubuntu e familiarizzare con esso.
Passo 1 – Eseguire il Bind Mount di un volume
Puoi creare una directory chiamata logs nella home directory del tuo utente corrente ed eseguirne il bind-mount su /var/log/nginx nel container Nginx usando il seguente comando:
|
1 |
docker run --name=nginx -d -v ~/logs:/var/log/nginx -p 5000:80 nginx |
Ecco informazioni più dettagliate su questo comando:
--name=nginxassegna un nome al container per un facile riferimento.-dl'argomento scollega il processo e lo esegue in background.-v hostPath:containerPathmappa il percorso dell'host e il percorso del container per eseguire il bind mount.-p hostPort:containerPortl'argomento mappa la porta del container sulla porta dell'host.nginxalla fine della riga è il nome dell'immagine che dovrebbe essere utilizzata per avviare il container.
Passo 2 – Accesso ai dati sull'host
Ora hai un container Nginx in esecuzione sul tuo server e la porta 5000 del tuo server è mappata sulla porta 80 di Nginx. Puoi aprire la porta nel browser web con il seguente URL:
|
1 |
http://serverIP:5000/ |

Nella directory ~/logs, vedrai i file access.log e error.log. Puoi visualizzare i log utilizzando il comando cat:
|
1 |
cat access.log |
|
1 2 3 |
Output: xx.xxx.xxx.xxx - - [17/Apr/2021:19:25:05 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.xxx.xxx.xxx Safari/537.36" "-" xx.xxx.xxx.xxx - - [17/Apr/2021:19:25:05 +0000] "GET /favicon.ico HTTP/1.1" 404 556 "http://xx.xxx.xxx.xxx:5000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xx.xxx.xxx.xxx Safari/537.36" "-" |
Puoi anche controllare la directory dei log ~/logs sulla tua macchina host e trovare il file dei log di Nginx. Inoltre, se apporti modifiche nella cartella logs, queste si rifletteranno anche nella cartella /var/log/nginx del container.
Conclusione
In questo tutorial, hai imparato come condividere i dati tra l'interno del container Docker e la macchina host. Questo è essenziale negli ambienti di sviluppo in cui l'analisi dei log è fondamentale per il debug.
Per ulteriori risorse su Docker sul nostro blog, puoi consultare i seguenti articoli:
- Come installare & gestire Docker su Ubuntu nel cloud pubblico
- Installazione e configurazione di Docker su CentOS 7
- Pulizia delle risorse Docker – Immagini, container e volumi
- Come eseguire Docker su CloudSigma (con CloudInit) Aggiornato
Buon computing!
Commenti
Ancora nessun commento. Scrivi il primo.