Cosa fa#
Gestisce il ciclo di vita dei container — unita' isolate che eseguono un processo con il proprio filesystem e rete. Piu' leggero delle VM perche' condivide il kernel dell'host.
Architettura e reti#
Per il modello mentale completo → docker-overview Per reti, tipi bridge, DNS interno → docker-network-defense
Comandi essenziali#
| Comando | Flag | Significato flag | Cosa fa |
|---|---|---|---|
docker build | -t | tag — assegna nome:versione | Crea un'immagine da un Dockerfile |
docker build | . | context — cartella corrente | Specifica dove cercare il Dockerfile |
docker run | -d | detached — background | Avvia un container |
docker run | -p | publish — host:container | Mappa le porte (es. 8080:80) |
docker run | --name | name — nome personalizzato | Assegna un nome al container |
docker run | --rm | remove — elimina al termine | Utile per container temporanei |
docker ps | -a | all — anche quelli spenti | Lista i container |
docker images | — | — | Lista le immagini caricate |
docker stop/rm | — | — | Ferma o elimina un container |
docker rmi | — | — | Elimina un'immagine |
docker compose up | -d | detached — in background | Avvia tutti i servizi |
docker compose down | -v | volumes — rimuove volumi | Spegne e cancella dati persistenti |
docker compose logs | -f | follow — segue in tempo reale | Mostra output dei container |
docker compose logs | --tail 20 | tail — ultime N righe | Mostra solo le ultime 20 righe |
docker compose run | --rm | remove — elimina dopo l'uso | Esegue comando una tantum |
docker compose exec | -it | interactive terminal — shell interattiva | Entra in un container attivo |
docker inspect | — | — | Mostra metadati completi del container |
docker network-defense ls | — | — | Lista tutte le reti Docker |
docker network-defense inspect | — | — | Dettagli di una rete (IP, container) |
docker cp src container:dest | — | — | Copia file da host a container |
docker cp container:src dest | — | — | Copia file da container a host |
Workflow Atomico — Build & Run#
A differenza di compose, i comandi docker puri servono per gestire il singolo tassello.
# 1. Crea l'immagine dal Dockerfile nella cartella attuale
docker build -t mio-tool:v1.0 .
# 2. Avvia il container mappando la porta 8080 dell'host sulla 80 interna
docker run -d -p 8080:80 --name web-test mio-tool:v1.0
# 3. Esegui un'analisi rapida in un container che si auto-distrugge alla chiusura
docker run --rm -it alpine:latest /bin/sh
# --rm è vitale per non accumulare container "morti" nel sistemaEsempio reale compose#
Per un esempio annotato completo (Chatwoot, reti separate, ancora YAML) → docker-compose
Combinazioni utili#
# Riavvio pulito — cancella tutto e riparte da zero
docker compose down -v && docker compose up -d
# -v rimuove i volumi — utile quando il DB e' corrotto
# Debug di un servizio specifico
docker compose logs -f --tail 20 rails
# --tail 20 = mostra solo ultime 20 righe prima di seguire
# Trova l'IP interno di un container
docker inspect chatwoot | grep IPAddress
# Entra in un container per debug
docker compose exec -it chatwoot bash
# -i = interactive, -t = tty (shell interattiva)
#in questo modo legge direttamente stdin (è un terminale non interattivo)
gunzip -c backup.sql.gz | docker exec -i postgres-rag psql -U rag_user -d foo
# Modifica un file di configurazione in un container senza editor interno
# Sintassi speculare a scp: src e dest, uno dei due ha il prefisso container:
docker cp nome_container:/etc/app/config.xml ./config.xml # estrai dall'host
# ... edita config.xml con il tuo editor ...
docker cp ./config.xml nome_container:/etc/app/config.xml # reinserisci nel container
# Il nome container si trova con: docker ps
# ATTENZIONE: docker cp non preserva ownership — il file arriva con uid/gid dell'utente host
# Dopo ogni cp in entrata, ripristina i permessi:
docker exec nome_container chown root:wazuh /etc/app/config.xml # adatta user:group al servizio
# Lista reti e container per rete
docker network-defense ls
docker network-defense inspect mynetworkSicurezza#
Per docker.sock e privilege escalation → docker-sock Per hardening container e immagini → docker-security
Warning
docker compose down -v e' distruttivo — cancella fisicamente i volumi. Usalo solo se hai un backup o vuoi resettare il lab.
Scenario Reale — Blue Team#
# Un analista SOC controlla i container in esecuzione su un server sospetto
docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Ports}}"
# Cerca container con porte esposte non previste
docker ps --format "{{.Ports}}" | grep -v "^$"
# Verifica se qualche container ha docker.sock montato
docker inspect $(docker ps -q) | grep docker.sock
# Controlla i log di un container sospetto
docker logs --since 1h container_sospetto
# --since 1h = solo ultima oraCollegato a#
- system — categoria
- docker-overview — modello mentale: immagini, container, volumi
- docker-networks — reti Docker, tipi bridge, DNS interno
- docker-compose — file YAML multi-servizio, esempi annotati
- docker-volumes — concetto: named volume vs bind mount
- docker-volume — comandi: ls, inspect, migrazione
- docker-sock — sicurezza: privilege escalation via socket
- docker-security — hardening container e immagini


