Docker è uno strumento open source che le applicazioni dei pacchetti, tutti i pacchetti richiesti e il suo sistema operativo di base in pacchetti containerizzati. Poiché i contenitori Docker sono autonomi, vengono eseguiti su qualsiasi sistema senza alcuna necessità di riconfigurazione.
Docker crea contenitori dalle immagini. Un'immagine Docker è un pacchetto autonomo che definisce tutti i requisiti necessari per eseguire un'applicazione, come sistema operativo, runtime, strumenti di sistema, librerie, configurazioni e altro ancora. Docker converte le immagini in contenitori durante il runtime.
Docker crea immagini dalle configurazioni definite in un file Docker. Un Dockerfile è semplicemente un file di configurazione che indica tutte le istruzioni sulla creazione di un'immagine Docker. Di conseguenza, la creazione di immagini Docker che utilizza un fikerfile è più facile e molto più efficiente.
Questa guida ti accompagnerà attraverso la creazione di un file Docker e lo userà per costruire un'immagine Docker.
Formato Dockerfile
Dockerfile è un documento di testo grezzo. Le voci nel Dockerfile sono nel seguente formato:
$ Istruzioni argomenti
La prima parte definisce i comandi Docker che è possibile utilizzare in una shell Docker. Il secondo rappresenta gli argomenti o i valori specifici da passare all'istruzione primaria.
NOTA: Le istruzioni non sono sensibili al caso. Tuttavia, Docker consiglia di usare maiuscole per distinguerli dagli argomenti.
Di seguito sono riportate alcune istruzioni popolari in un file Docker.
DA - Questa istruzione definisce l'immagine genitore per le istruzioni successive. Dalla clausola deve essere la prima voce in un file Docker. Può venire dopo una direttiva per commenti o analisi o Arg usata nella direttiva.
Arg - Definisce le variabili utilizzate durante la build una volta eseguita il comando build docker sul file.
Cmd - Questo imposta il comando eseguito sulla creazione del contenitore. Docker consente solo un'istruzione CMD per file. Quando ne hai più di uno definito, esegue l'ultimo comando.
ETICHETTA - L'istruzione dell'etichetta definisce le informazioni sui metadati per l'immagine. Puoi aggiungere tutte le etichette che si vedono opportuno sotto forma di coppie di valore chiave. Ad esempio, i metadati delle immagini potrebbero includere il numero di versione, le informazioni dell'autore, la descrizione, ecc.
CORRERE - Imposta le istruzioni da eseguire durante la build dell'immagine.
UTENTE - Questa istruzione imposta il nome utente o l'UID dell'utente durante l'esecuzione dell'immagine o delle istruzioni in un file Docker come CMD, Esegui e INCEPPOINT.
PUNTO D'ENTRATA - Definisce i comandi che Docker esegue alla creazione di contenitori. Le opzioni sono invasabili nella riga di comando durante l'avvio del contenitore.
AGGIUNGERE - Questa istruzione copia file e directory dall'origine specificata a una destinazione specificata. La fonte può essere un percorso locale o un URL esterno. Se i file sono archivi, Docker li disimbella automaticamente nell'immagine.
VOLUME - Le istruzioni del volume consentono di creare punti di montaggio da directory della macchina host o altri contenitori.
ESPORRE - Questa istruzione dice a Docker su quale porta ascolta durante il runtime.
Env - Imposta le variabili di ambiente.
Workdir - Imposta la directory di lavoro corrente. Se la directory specificata non esiste, Docker ne creerà automaticamente uno.
Quanto sopra sono alcune istruzioni standard che è possibile utilizzare in un file Docker.
Come creare un file Docker
Il processo di creazione di un fikerfile è semplice. Inizia creando una directory di lavoro per le tue operazioni Docker. Successivamente, crea un fikerfile e modificalo con il tuo editor di testo preferito.
$ cd ~
$ mkdir Docker
$ CD Docker
$ touch Dockerfile
$ vim Dockerfile
Iniziamo ottenendo l'immagine di base dall'hub Docker. Possiamo farlo usando l'istruzione da Dockerfile.
In questo esempio, creeremo un semplice contenitore contenente l'esecuzione di Nginx Server su Debian 10 Immagine.
Debian 10 Immagine su Docker Hub
Modifica Dockerfile e aggiungi le seguenti voci.
Da ebian: 10.9
Esegui l'aggiornamento Apt-get && \
Apt -get Install -y nginx \
Etichetta manutentore = "LinuxHint"
Etichetta versione = "1.0 "
Etichetta Descrizione = "Una semplice immagine che esegue Nginx su Debain 10"
Esporre 80/TCP
Cmd ["nginx", "-g", 'demone off;']
Nel suddetto Dockerfile, iniziamo definendo l'immagine di base (Debian 10.9)
Eseguiamo vari comandi APT per aggiornare i pacchetti e installare Nginx Web-Server.
Aggiungiamo quindi informazioni sui metadati sull'immagine, tra cui il manutentore, la versione e la descrizione.
Infine, impostiamo la porta Expose e il comando disattiva il demone Nginx. Il comando sopra impedisce al contenitore di fermarsi.
Salva il file ed esegui la build Docker contro il file.
Come costruire un'immagine Dockerfile
Una volta completato il Dockerfile, possiamo procedere a costruire l'immagine. Esegui il comando build Docker all'interno della directory Docker:
$ cd ~/docker
$ Docker build -pull -rm -f “Dockerfile” -t Docker: ultimo “."
Nel comando sopra, utilizziamo il comando build docker e passiamo varie opzioni. Ad esempio, -pull dice a Docker di provare a tirare l'ultima versione dell'immagine.
Il -rm rimuove i contenitori immediati dopo il completamento del processo di build dell'immagine.
-F Specifica il nome Dockerfile.
Infine, l'opzione -t imposta il tag per l'immagine.
I comandi di cui sopra creeranno correttamente l'immagine e la memorizzeranno sul disco locale.
È possibile verificare che l'immagine esista chiamando il comando:
$ Docker immagine ls
$ Docker Ultimo 162E94589BEC 2 minuti fa 233 MB
Come creare un contenitore Docker
Ora che abbiamo l'immagine da Dockerfile, possiamo andare avanti e generare un contenitore. Per fare ciò, utilizziamo il comando Docker Run come:
$ Docker run -p 80:80 -NAME NGINX Docker
I comandi sopra avviano il contenitore con il nome nginx e lega il contenitore alla porta 80.
Per mostrare contenitori in esecuzione, usa il comando:
$ Docker Container LS
1C90266035B5 NGINX: ultimi 57 secondi fa 56 secondi 80/TCP NGINX
Il comando sopra mostra il contenitore Nginx verso l'alto e in esecuzione.
Conclusione
Questo tutorial ha coperto la scrittura Dockerfiles, creando immagini ed eseguendo un contenitore Docker dalle immagini. Per saperne di più su Dockerfiles, considera la documentazione.