Docker és una de les eines que, quan l'aprens a fer servir bé, no entens com has pogut viure sense ella. Contenidors que s'arrenquen en segons, entorns aïllats i reproduïbles, serveis que funcionen igual al Mac que al servidor Linux. Però el nombre de comandes pot aclaparar al principi. Aquesta guia és el full de referència que m'agradaria haver tingut des del primer dia.

Conceptes clau en trenta segons

Abans de les comandes, tres conceptes que cal tenir clars:

  • Imatge: la "recepta" del contenidor. Immutable, descarregable del Docker Hub.
  • Contenidor: la imatge en execució. Efímer per defecte — si l'esborres, les dades desapareixen.
  • Volum: la forma de persistir dades fora del contenidor.

Contenidors — comandes del dia a dia

Llista tots els contenidors en execució. Amb -a veus també els aturats:

docker ps
docker ps -a

Arrencar, aturar i reiniciar un contenidor:

docker start   nom_o_id
docker stop    nom_o_id
docker restart nom_o_id

Executar un contenidor nou a partir d'una imatge. Les opcions més habituals:

# -d  → mode segon pla (detached)
# -p  → mapeja port host:contenidor
# --name → nom personalitzat
# -v  → volum o carpeta local:ruta_contenidor

docker run -d \
  --name el_meu_servei \
  -p 8080:80 \
  -v /data/fitxers:/app/data \
  nom_imatge:tag

Veure els logs d'un contenidor en temps real:

docker logs -f nom_o_id

Entrar dins d'un contenidor en execució (molt útil per depurar):

docker exec -it nom_o_id bash
# Si no té bash, prova amb sh:
docker exec -it nom_o_id sh

Esborrar un contenidor aturat. Amb -f el força tot i que estigui en execució:

docker rm nom_o_id
docker rm -f nom_o_id

Imatges

Descarregar una imatge del Docker Hub, llistar les locals i esborrar-ne una:

docker pull nginx:latest
docker images
docker rmi nom_imatge:tag

Construir una imatge a partir d'un Dockerfile a la carpeta actual:

docker build -t nom_imatge:tag .

Volums i xarxes

Gestió bàsica de volums Docker (la forma recomanada de persistir dades):

docker volume ls
docker volume create nom_volum
docker volume inspect nom_volum
docker volume rm nom_volum

Llistar les xarxes i inspectar-ne una per veure quins contenidors hi estan connectats:

docker network ls
docker network inspect nom_xarxa

Neteja del sistema

Amb el temps s'acumulen imatges, contenidors aturats i volums orfes. Aquestes comandes recuperen espai:

# Esborra tot el que no s'usa (contenidors aturats,
# imatges sense referència, xarxes i cache de build)
docker system prune

# Inclou també els volums (⚠️ compte amb les dades!)
docker system prune --volumes

# Quant espai ocupa Docker
docker system df

Docker Compose — gestió de serveis múltiples

Docker Compose és l'eina per definir i orquestrar diversos contenidors amb un sol fitxer docker-compose.yml. En lloc de recordar deu docker run llargs, escrius la configuració una vegada i ja.

Les comandes s'executen sempre a la carpeta on és el fitxer docker-compose.yml:

# Arrencar tots els serveis en segon pla
docker compose up -d

# Aturar tots els serveis (sense esborrar-los)
docker compose stop

# Aturar i esborrar contenidors i xarxes
docker compose down

# Esborrar-ho tot, incloent volums (⚠️ dades!)
docker compose down -v

Veure l'estat dels serveis i els seus logs:

docker compose ps
docker compose logs -f
docker compose logs -f nom_servei

Reconstruir les imatges i reiniciar (imprescindible quan canvies el docker-compose.yml o el Dockerfile):

docker compose up -d --build
docker compose pull && docker compose up -d

Executar una comanda dins d'un servei concret (equivalent a docker exec):

docker compose exec nom_servei bash

Exemple mínim de docker-compose.yml

Per tenir una referència ràpida, aquí un exemple funcional amb Nginx i un volum:

services:
  web:
    image: nginx:alpine
    container_name: web_nginx
    restart: unless-stopped
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html:ro

volumes:
  html:

Amb restart: unless-stopped, el contenidor s'arrenca sol si el servidor es reinicia — imprescindible en producció.

Resum ràpid

Les comandes que faig servir el 90% del temps:

  • docker ps -a — veure tots els contenidors.
  • docker logs -f — seguir logs en temps real.
  • docker exec -it ... bash — entrar al contenidor.
  • docker compose up -d — arrencar l'stack.
  • docker compose down — aturar l'stack.
  • docker system prune — netejar espai.

Més informació

La documentació oficial és excel·lent i té exemples per a cada comanda: docs.docker.com. Per a Docker Compose específicament: docs.docker.com/compose.