Skip to main content
  1. Comandi/

docker

·4 mins
Alessio Barnini
Author
Alessio Barnini
Table of Contents

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
#

ComandoFlagSignificato flagCosa fa
docker build-ttag — assegna nome:versioneCrea un'immagine da un Dockerfile
docker build.context — cartella correnteSpecifica dove cercare il Dockerfile
docker run-ddetached — backgroundAvvia un container
docker run-ppublishhost:containerMappa le porte (es. 8080:80)
docker run--namename — nome personalizzatoAssegna un nome al container
docker run--rmremove — elimina al termineUtile per container temporanei
docker ps-aall — anche quelli spentiLista i container
docker imagesLista le immagini caricate
docker stop/rmFerma o elimina un container
docker rmiElimina un'immagine
docker compose up-ddetached — in backgroundAvvia tutti i servizi
docker compose down-vvolumes — rimuove volumiSpegne e cancella dati persistenti
docker compose logs-ffollow — segue in tempo realeMostra output dei container
docker compose logs--tail 20tail — ultime N righeMostra solo le ultime 20 righe
docker compose run--rmremove — elimina dopo l'usoEsegue comando una tantum
docker compose exec-itinteractive terminal — shell interattivaEntra in un container attivo
docker inspectMostra metadati completi del container
docker network-defense lsLista tutte le reti Docker
docker network-defense inspectDettagli di una rete (IP, container)
docker cp src container:destCopia file da host a container
docker cp container:src destCopia 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 sistema

Esempio 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 mynetwork

Sicurezza
#

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 ora

Collegato 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

Related