5.1 Fondamenti del comando docker exec
Il comando docker exec
è uno strumento per interagire con i container in esecuzione. Ti permette di eseguire comandi e aprire sessioni interattive all'interno del container. Questo è utile per attività amministrative, debug e monitoraggio. In questa lezione, esamineremo in dettaglio come usare il comando docker exec
, quali parametri sono disponibili e forniremo esempi pratici del suo utilizzo.
Il comando docker exec
viene utilizzato per eseguire comandi in un container in esecuzione. Con esso, puoi accedere al container e interagire con esso come se stessi lavorando direttamente con un server.
Sintassi
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
Dove:
-
CONTAINER
: il nome o l'identificativo del container in cui vuoi accedere. -
COMMAND
: il comando che vuoi eseguire all'interno del container. ARG...
: argomenti per il comando.
Esempio di utilizzo base
In questo esempio, viene eseguito il comando ls /app
all'interno del container my_container
, permettendoti di vedere il contenuto della directory /app
nel container.
docker exec my_container ls /app
5.2 Parametri del comando docker exec
Il comando docker exec supporta diverse opzioni che ti permettono di configurare il comportamento dell'esecuzione dei comandi all'interno del container.
1. Aprire una sessione interattiva
Per iniziare una sessione interattiva, usa una combinazione delle opzioni -i
(interactive) e -t
(pseudo-TTY)
.
docker exec -it my_container /bin/bash
In questo esempio verrà aperto un terminale interattivo Bash
all'interno del container my_container
. Questo ti permetterà di eseguire comandi in tempo reale.
2. Eseguire comandi in modalità non bloccante
Se devi eseguire un comando all'interno di un container senza aspettare che finisca, puoi usare l'opzione -d
(detached mode).
docker exec -d my_container touch /app/newfile.txt
In questo esempio, il comando crea un file vuoto newfile.txt
nella directory /app
del container my_container
. Il controllo del terminale ritorna immediatamente dopo l'esecuzione del comando, senza aspettare che finisca.
3. Specificare variabili di ambiente personalizzate
Puoi passare variabili di ambiente al container utilizzando il parametro -e
.
docker exec -e MY_VAR=value my_container env
Questo esempio passa la variabile di ambiente MY_VAR
al container e avvia il comando env
, per mostrare tutte le variabili di ambiente all'interno del container.
5.3 Esempi di utilizzo
Esempio 1: Visualizzare i processi in esecuzione all'interno del container
Questo esempio eseguirà il comando ps aux
all'interno del container my_container
e mostrerà l'elenco di tutti i processi in esecuzione.
docker exec my_container ps aux
Esempio 2: Controllare lo stato di un servizio nel container
Questo esempio eseguirà il comando service nginx status
all'interno del container my_container
e mostrerà lo stato del servizio nginx
.
docker exec my_container service nginx status
Esempio 3: Installare un pacchetto all'interno del container
Questo esempio aggiornerà l'elenco dei pacchetti e installerà l'editor vim
all'interno del container my_container
.
docker exec my_container apt-get update && apt-get install -y vim
5.4 Scenari pratici
1. Amministrazione dei container
Il comando docker exec permette agli amministratori di svolgere compiti di manutenzione all'interno dei container: modificare i file di configurazione, controllare i log o cambiare i permessi dei file.
docker exec -it my_container vim /etc/nginx/nginx.conf
2. Debug delle applicazioni
Durante lo sviluppo e il test delle applicazioni, il comando docker exec aiuta gli sviluppatori a verificare lo stato dell'app, effettuare il debugging e analizzare gli errori.
docker exec -it my_container python /app/scripts/debug.py
3. Monitoraggio e diagnostica
Con docker exec puoi eseguire comandi diagnostici e monitorare lo stato del container: controllare l'uso delle risorse, le connessioni di rete e altre metriche.
docker exec my_container top
Questo comando avvierà l'utilità top all'interno del container my_container e mostrerà l'attuale utilizzo delle risorse.
5.5 Raccomandazioni aggiuntive
1. Garantire la sicurezza
Quando utilizzi il comando docker exec, è importante rispettare la sicurezza. Assicurati che l'accesso ai contenitori sia limitato e che solo utenti autorizzati possano eseguire comandi all'interno dei contenitori.
2. Automazione dei compiti
Puoi automatizzare le attività di routine utilizzando script che usano il comando docker exec. Questo permette di creare flussi di lavoro complessi e automatizzare l'amministrazione dei contenitori.
#!/bin/bash
for container in $(docker ps -q); do
docker exec $container uptime
done
Questo script eseguirà il comando uptime
in tutti i contenitori in esecuzione e mostrerà il loro tempo di attività.
3. Log e debug
A volte l'esecuzione di un comando potrebbe terminare con un errore. In questi casi, è utile guardare i log del contenitore per identificare la causa.
docker logs my_container
GO TO FULL VERSION