Docker & Compose Gestione Container Base Tutti gli OS

docker run

Crea ed avvia un nuovo container a partire da un'immagine specificata.

Sintassi del comando
>_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