Principali comandi Docker – raggruppati per categoria per facilitare la consultazione quotidiana.
1. Gestione delle immagini
docker pull <immagine>– scarica un'immagine dal Docker Hub (o registry).docker images– elenca le immagini locali.docker rmi <immagine>– rimuove un'immagine.docker build -t <nome>:<tag> .– crea un'immagine dalDockerfilenella directory corrente.docker tag <immagine> <repo>:<tag>– rinomina/tagga un'immagine.docker push <repo>:<tag>– invia l'immagine al registry.
2. Container (esecuzione)
docker run <immagine> – crea ed esegue un container. Opzioni principali:
| Flag | Cosa fa |
|---|---|
-d |
Esegue in background (detached) |
-p 8080:80 |
Mappa la porta host:container |
--name miaapp |
Definisce il nome del container |
-v /host:/container |
Monta un volume |
docker ps– elenca i container in esecuzione.docker ps -a– elenca tutti i container (attivi e fermati).docker stop <id|nome>– ferma un container.docker start <id|nome>– avvia un container fermo.docker restart <id|nome>– riavvia un container.docker rm <id|nome>– rimuove un container.
3. Log, shell e ispezione
docker logs <id|nome>– visualizza i log del container.docker logs -f <id|nome>– segue i log in tempo reale (tail -f).docker exec -it <id|nome> sh– apre una shell interattiva nel container.docker inspect <id|nome>– visualizza i dettagli completi in JSON.docker stats– monitora l'utilizzo di CPU e memoria in tempo reale.
4. Volumi e dati
docker volume ls– elenca i volumi.docker volume create <nome>– crea un volume.docker volume rm <nome>– rimuove un volume.docker system df– visualizza l'utilizzo disco (immagini, container, volumi).
5. Reti
docker network ls– elenca le reti.docker network create <nome>– crea una rete.docker network inspect <nome>– visualizza i dettagli della rete.docker network connect <rete> <container>– connette il container alla rete.docker network disconnect <rete> <container>– disconnette il container dalla rete.
6. Pulizia (housekeeping)
docker system prune– rimuove container fermati, reti e immagini non utilizzate.docker system prune -a– idem, includendo tutte le immagini non utilizzate.docker volume prune– rimuove i volumi non utilizzati.
docker system prune -a rimuove le immagini non collegate a nessun container attivo. Usate con cautela in ambienti condivisi.7. Docker Compose (multi-container)
docker compose up -d– avvia i container definiti neldocker-compose.yml.docker compose down– ferma e rimuove i container dello stack.docker compose logs -f– segue i log di tutti i servizi.docker compose ps– elenca i container del progetto.docker compose exec <servizio> sh– apre una shell in un servizio.
8. Buone pratiche in produzione
Docker è diventato lo standard per impacchettare ed eseguire applicazioni. In produzione tuttavia, immagini mal configurate e container in esecuzione come root possono ampliare la superficie di attacco e complicare gli audit.
Immagini più leggere e a livelli
Utilizzate immagini base Alpine o distroless quando possibile e adottate multi-stage build per compilare in un passaggio e copiare solo il binario nel passaggio finale. Meno pacchetti = meno CVE e dimensioni ridotte. Fissate il tag dell'immagine base (es.: node:20-alpine) per evitare sorprese nei rebuild.
Eseguire come non-root
Create un utente dedicato nel Dockerfile e utilizzate l'istruzione USER prima del CMD. In Kubernetes o Docker Compose, evitate la modalità privileged e limitate le risorse CPU e memoria. Monitorate con strumenti di conformità come Trivy o Docker Scout per identificare le vulnerabilità note.
Secret e configurazione
Non inserite mai password o chiavi in testo nelle variabili d'ambiente del docker-compose.yml. Utilizzate Docker secrets, file montati come read-only o un orchestratore (Kubernetes Secrets, HashiCorp Vault). Effettuate la rotazione delle credenziali regolarmente e mantenete le immagini base aggiornate.