androide

Comando di esecuzione Docker con esempi

Creating your first Dockerfile, image and container

Creating your first Dockerfile, image and container

Sommario:

Anonim

Docker è una piattaforma che consente di sviluppare, testare e distribuire applicazioni come contenitori portatili e autosufficienti che funzionano praticamente ovunque.

Il comando docker run crea un contenitore da una determinata immagine e avvia il contenitore utilizzando un determinato comando. È uno dei primi comandi con cui dovresti familiarizzare quando inizi a lavorare con Docker., useremo l'immagine ufficiale di Nginx per mostrare vari modi per eseguire un contenitore Docker.

Docker Run Command

Il comando docker run ha la forma seguente:

docker run IMAGE

Il nome dell'immagine da cui deve essere creato il contenitore è l'unico argomento richiesto per il comando docker run . Se l'immagine non è presente sul sistema locale, viene estratta dal registro.

Se non viene specificato alcun comando, il comando specificato nelle istruzioni CMD o ENTRYPOINT viene eseguito durante l'esecuzione del contenitore.

A partire dalla versione 1.13, l'interfaccia della riga di comando di Docker è stata ristrutturata e tutti i comandi sono stati raggruppati sotto l'oggetto con cui interagiscono.

Poiché il comando di run interagisce con i contenitori, ora è un sottocomando del docker container . La sintassi del nuovo comando è la seguente:

docker container run IMAGE

La vecchia sintassi precedente alla 1.13 è ancora supportata. Sotto il cofano, il comando docker run è un alias per l' docker container run . Gli utenti sono incoraggiati a utilizzare la nuova sintassi dei comandi.

Un elenco di tutte le opzioni di docker container run è disponibile nella pagina della documentazione Docker.

Esegui il contenitore in primo piano

Per impostazione predefinita, quando non viene fornita alcuna opzione al comando docker run , il processo di root viene avviato in primo piano. Ciò significa che l'input, l'output e l'errore standard dal processo di root sono collegati alla sessione del terminale.

docker container run nginx

L'output del processo nginx verrà visualizzato sul tuo terminale. Dal momento che non ci sono connessioni al server web, il terminale è vuoto.

Per arrestare il contenitore, terminare il processo Nginx in esecuzione premendo CTRL+C

Esegui il contenitore in modalità indipendente

Per mantenere il contenitore in esecuzione quando si esce dalla sessione del terminale, avviarlo in modalità staccata. Questo è simile all'esecuzione di un processo Linux in background.

Utilizzare l'opzione -d per avviare un contenitore rimosso:

docker container run -d nginx

050e72d8567a3ec1e66370350b0069ab5219614f9701f63fcf02e8c8689f04fa

Il contenitore disconnesso si arresterà al termine del processo di root.

È possibile elencare i contenitori in esecuzione utilizzando il comando docker container ls .

Per collegare il terminale al processo principale del contenitore rimosso, utilizzare il comando docker container attach .

Rimuovere il contenitore dopo l'uscita

Per impostazione predefinita, quando il contenitore viene chiuso, il suo file system persiste sul sistema host.

Le opzioni --rm indicano al comando docker run --rm di rimuovere il contenitore quando esce automaticamente:

docker container run --rm nginx

L'immagine Nginx potrebbe non essere l'esempio migliore per ripulire il file system del contenitore dopo l'uscita del contenitore. Questa opzione viene solitamente utilizzata su contenitori in primo piano che eseguono attività a breve termine come test o backup di database.

Imposta il nome del contenitore

In Docker, ogni contenitore è identificato dal suo UUID e dal nome. Per impostazione predefinita, se non impostato esplicitamente, il nome del contenitore viene generato automaticamente dal demone Docker.

Utilizzare l'opzione --name per assegnare un nome personalizzato al contenitore:

docker container run -d --name my_nginx nginx

Il nome del contenitore deve essere univoco. Se si tenta di avviare un altro contenitore con lo stesso nome, verrà visualizzato un errore simile al seguente:

docker: Error response from daemon: Conflict. The container name "/my_nginx" is already in use by container "9…c". You have to remove (or rename) that container to be able to reuse that name.

Esegui il docker container ls -a per elencare tutti i contenitori e vedere i loro nomi:

docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9d695c1f5ef4 nginx "nginx -g 'daemon of…" 36 seconds ago Up 35 seconds 80/tcp my_nginx

I nomi significativi sono utili per fare riferimento al contenitore all'interno di una rete Docker o quando si eseguono comandi CLI docker.

Pubblicazione di porte contenitore

Per impostazione predefinita, se non vengono pubblicate porte, il processo in esecuzione nel contenitore è accessibile solo dall'interno del contenitore.

Pubblicare le porte significa associare le porte del contenitore alle porte del computer host in modo che le porte siano disponibili per i servizi al di fuori di Docker.

Per pubblicare una porta usare le opzioni -p come segue:

-p host_ip:host_port:container_port/protocol

  • Se non viene specificato host_ip , il valore predefinito è 0.0.0.0 . Se non viene specificato alcun protocol , il valore predefinito è TCP. Per pubblicare più porte, utilizzare più opzioni -p .

Per mappare la porta TCP 80 (nginx) nel contenitore alla porta 8080 sull'interfaccia host locale dell'host, eseguire:

docker container run --name web_server -d -p 8080:80 nginx

Puoi verificare che la porta sia pubblicata aprendo http://localhost:8080 nel tuo browser o eseguendo il seguente comando curl sull'host Docker:

curl -I

L'output sarà simile al seguente:

HTTP/1.1 200 OK Server: nginx/1.17.6 Date: Tue, 26 Nov 2019 22:55:59 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Tue, 19 Nov 2019 12:50:08 GMT Connection: keep-alive ETag: "5dd3e500-264" Accept-Ranges: bytes

Condivisione dei dati (volumi di montaggio)

Quando un contenitore viene arrestato, tutti i dati generati dal contenitore vengono rimossi. I volumi Docker sono il modo preferito per rendere persistenti i dati e condividerli su più contenitori.

Per creare e gestire i volumi, utilizzare le opzioni -p come segue:

-v host_src:container_dest:options

  • host_src può essere un percorso assoluto per un file o una directory sull'host o un volume denominato. container_dest è un percorso assoluto per un file o una directory nel contenitore. Le host_src possono essere rw (lettura-scrittura) e ro (sola lettura). Se non viene specificata alcuna opzione, il valore predefinito è rw .

Per spiegare come funziona, creiamo una directory sull'host e index.html un file index.html al suo interno:

mkdir public_html echo "Testing Docker Volumes" > public_html/index.html

Quindi, montare la directory public_html in /usr/share/nginx/html nel contenitore:

docker run --name web_server -d -p 8080:80 -v $(pwd)/public_html:/usr/share/nginx/html nginx

Invece di specificare il percorso assoluto della directory public_html , stiamo usando il comando $(pwd) , che stampa la directory di lavoro corrente.

Ora, se digiti http://localhost:8080 nel tuo browser, dovresti vedere i contenuti del file index.html . Puoi anche usare l' curl :

curl

Testing Docker Volumes

Esegui il contenitore in modo interattivo

Quando si ha a che fare con processi interattivi come bash , utilizzare le opzioni -i e -t per avviare il contenitore.

Le opzioni -it indicano a Docker di mantenere l'input standard collegato al terminale e allocare una pseudo-tty:

docker container run -it nginx /bin/bash

La shell Bash del contenitore verrà collegata al terminale e il prompt dei comandi cambierà:

root@1da70f1937f5:/#

Ora puoi interagire con la shell del contenitore ed eseguire qualsiasi comando al suo interno.

In questo esempio, abbiamo fornito un comando ( /bin/bash ) come argomento al comando docker run docker eseguito invece di quello specificato nel file Docker.

Conclusione

Docker è lo standard per l'imballaggio e la distribuzione di applicazioni e un componente essenziale di CI / CD, automazione e DevOps.

Il comando docker container run viene utilizzato per creare ed eseguire contenitori Docker.

scaricatore di porto