---
name: docker_list_containers
kind: function
lang: go
domain: infra
version: "1.0.0"
purity: impure
signature: "func DockerListContainers(all bool) ([]ContainerInfo, error)"
description: "Lista contenedores Docker locales. Si all es true incluye contenedores detenidos. Parsea la salida JSON de docker ps."
tags: [docker, container, list, infra]
uses_functions: []
uses_types: [container_info_go_infra]
returns: [container_info_go_infra]
returns_optional: false
error_type: "error_go_core"
imports: [encoding/json, fmt, os/exec]
params:
  - name: all
    desc: "si true incluye contenedores detenidos, si false solo los que estan corriendo"
output: "slice de ContainerInfo con ID, nombre, estado de cada contenedor"
tested: false
tests: []
test_file_path: ""
file_path: "functions/infra/docker_list_containers.go"
---

## Ejemplo

```go
containers, err := DockerListContainers(true)
if err != nil {
    log.Fatal(err)
}
for _, c := range containers {
    fmt.Printf("%s %s %s\n", c.ID, c.Name, c.Status)
}
```

## Notas

Usa `docker ps --format '{{json .}}'` para parsear la salida de forma confiable. Incluye helpers internos `splitLines` y `parseLabels`.
