Reglas de nombres en Docker
Docker permite los caracteres [a-zA-Z0-9_.-] en nombres de contenedor, con un
máximo de 64 caracteres. El primer carácter no puede ser -. Si no especificás
nombre, Docker genera uno aleatorio (de ahí los happy_curie y similares que ves
sin querer).
Estilo "adjetivo-sustantivo"
El patrón <adjetivo>-<sustantivo> tiene la ventaja de ser
memorable: es más fácil decir "happy-otter" en una llamada que un hash hex. Para entornos
de dev y staging con pocos contenedores, alcanza. Para clusters grandes hay que sumar
sufijo numérico para evitar colisiones.
Naming en producción
En clusters reales, el patrón es <servicio>-<entorno>-<índice>:
api-prod-1, api-prod-2, worker-staging-3. Permite
scripting, listado por servicio (docker ps --filter name=api-prod) y
métricas agregadas en Prometheus.
Container vs image
Distinguí: el nombre de imagen es my-org/my-app:1.2.3; el
nombre de contenedor es la instancia corriente. Mismo image puede tener
cien contenedores corriendo, cada uno con nombre único.
Naming en docker-compose
Compose por default nombra <proyecto>_<servicio>_<índice>.
Podés sobreescribir con container_name: en el YAML, pero perdés escalabilidad
(no podés correr dos instancias del mismo servicio). Suele convenir dejar el default y
usar service para referirse al pool.
Naming en Kubernetes
En K8s, el "nombre del contenedor" vive dentro del Pod y debe seguir DNS-1123:
minúsculas, números y guiones, máximo 63 caracteres, debe empezar y terminar con
alfanumérico. El nombre del Pod se autogenera: <deployment>-<hash>-<hash>.
Anti-patrones
- Nombres con espacios o caracteres especiales: rompen scripts.
- Nombres específicos de host (
my-laptop-app): no portables. - Nombres con datos sensibles: aparecen en logs y métricas.
- Reusar nombre tras
docker rm: el ID viejo puede vivir en metadata de monitoreo.
Limpieza
Contenedores con nombres aleatorios se acumulan en máquinas de dev. docker container
prune elimina todos los detenidos. docker system prune -a agrega
imágenes y volúmenes sueltos. Hacelo de tanto en tanto en máquinas de desarrollo.