---
name: docker_container_running
kind: function
lang: py
domain: infra
version: "1.0.0"
purity: impure
signature: "docker_container_running(name: str, timeout: float = 5.0) -> bool"
description: "Comprueba si un contenedor Docker existe y está corriendo. True solo si docker inspect retorna State.Running=true. Cualquier fallo (docker ausente, contenedor inexistente, daemon caído, timeout) devuelve False sin excepción."
tags: [docker, container, infra, healthcheck]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: [subprocess]
params:
  - name: name
    desc: "Nombre o ID del contenedor a comprobar. Match exacto, no acepta wildcards."
  - name: timeout
    desc: "Timeout en segundos para `docker inspect`. Default 5.0. Si se supera devuelve False."
output: "True si el contenedor existe y está corriendo. False en cualquier otro caso (no existe, está parado, docker no disponible, timeout)."
tested: true
tests:
  - "True para contenedor en ejecución (mock subprocess)"
  - "False cuando docker inspect retorna 'false'"
  - "False cuando el contenedor no existe (returncode != 0)"
  - "False cuando docker no está instalado (FileNotFoundError)"
  - "False cuando se excede el timeout (TimeoutExpired)"
  - "Integration: comprueba contenedor real si docker disponible"
test_file_path: "python/functions/infra/tests/test_docker_container_running.py"
file_path: "python/functions/infra/docker_container_running.py"
---

## Ejemplo

```python
from python.functions.infra.docker_container_running import docker_container_running

if docker_container_running("better_maps_valhalla"):
    print("Valhalla up")
else:
    print("Valhalla down")
```

## Notas

Wrapper minimalista sobre `docker inspect -f '{{.State.Running}}'`. Pensado como
primitiva componible para verificadores de stack y health checks. No lanza
excepciones — un fallo de cualquier tipo se reporta como False, dejando que
el caller decida qué hacer (skip de test, reintentar, levantar el stack, etc.).
