Creating your first Dockerfile, image and container
Sommario:
- Docker Run Command
- Esegui il contenitore in primo piano
- Esegui il contenitore in modalità indipendente
- Rimuovere il contenitore dopo l'uscita
- Imposta il nome del contenitore
- Pubblicazione di porte contenitore
- Condivisione dei dati (volumi di montaggio)
- Esegui il contenitore in modo interattivo
- Conclusione
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 alcunprotocol
, 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. Lehost_src
possono essererw
(lettura-scrittura) ero
(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
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.
Comando Eco in Linux con esempi

Il comando echo è uno dei comandi più basilari e usati di frequente in Linux. Gli argomenti passati a echo vengono stampati sull'output standard.
Comando Curl in Linux con esempi

Curl è un'utilità della riga di comando per il trasferimento di dati da o verso un server progettato per funzionare senza l'interazione dell'utente. In questo tutorial, ti mostreremo come utilizzare lo strumento arricciatura attraverso esempi pratici e spiegazioni dettagliate delle opzioni di arricciatura più comuni.
Comando di taglio Linux con esempi

Cut è un'utilità della riga di comando che consente di tagliare parti di linee da file specificati o dati di piping e stampare il risultato sull'output standard. In questo tutorial, ti mostreremo come utilizzare il comando di taglio di Linux attraverso esempi pratici e spiegazioni dettagliate delle opzioni di taglio più comuni.