docker run
Crea ed avvia un nuovo container a partire da un'immagine specificata.
>_docker run [OPZIONI] IMMAGINE [COMANDO] [ARG...]
#container
#docker
#ports
#run
#volumes
Descrizione & Funzionamento
Il comando principale per lanciare container Docker. Consente di mappare porte di rete (`-p`), montare volumi persistenti (`-v`), passare variabili d'ambiente (`-e`) ed eseguire in background (`-d`).
Parametri, Flag & Opzioni (8)
Riferimento CLI| Flag / Opzione | Formato / Default | Descrizione | Esempio Rapido |
|---|---|---|---|
-d o --detach |
N/D | Esegue il container in background (modalità demone) e stampa l'ID del container. |
docker run -d nginx
|
-p o --publish |
<PORTA_HOST:PORTA_CONTAINER>
|
Inoltra e mappa una porta dell'host sulla porta del container. |
docker run -p 8080:80 nginx
|
--name |
<NOME>
|
Assegna un nome personalizzato e univoco al container. |
docker run --name my-webserver nginx
|
-v o --volume |
<HOST_PATH:CONTAINER_PATH[:ro]>
|
Monta una cartella o un volume persistente all'interno del container. |
docker run -v /data:/var/lib/mysql mysql:8
|
-e o --env |
<KEY=VALUE>
|
Imposta variabili d'ambiente all'interno del container. |
docker run -e MYSQL_ROOT_PASSWORD=secret mysql
|
--restart |
<no|always|unless-stopped>
Def:
no |
Politica di riavvio automatico del container al crash o al riavvio del server. |
docker run --restart unless-stopped redis
|
--network |
<NOME_RETE>
|
Collega il container a una rete Docker specifica creata dall'utente. |
docker run --network backend-net app
|
--rm |
N/D | Rimuove automaticamente il container quando viene arrestato. |
docker run --rm -it alpine sh
|
Esempi d'Uso Pratico (2)
#1 Avvia container MySQL 8 con volume persistente e password
Infrastruttura database
Terminale
$
docker run -d \
--name db-produzione \
-p 3306:3306 \
-v mysql_data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=SuperSecretPass2026! \
--restart unless-stopped \
mysql:8.4
Lancia in background un database MySQL 8.4 mappando la porta 3306 sull'host, montando il volume gestito `mysql_data` per non perdere i dati e impostando la password di root.
Output Atteso:
3a98f12c8b0e77d24a51e604f326a0b921387d83492084729017234891047123
#2 Esegue una shell temporanea Alpine per test di rete
Diagnostica rapida
Terminale
$
docker run --rm -it alpine ping -c 4 google.com
Scarica ed esegue un container leggero Alpine, lancia 4 ping verso Google e distrugge automaticamente il container al termine.
Output Atteso:
PING google.com (142.250.180.206): 56 data bytes 64 bytes from 142.250.180.206: seq=0 ttl=115 time=12.4 ms 64 bytes from 142.250.180.206: seq=1 ttl=115 time=11.8 ms --- google.com ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss