En esta lección vas a entender Docker API y por qué existe aunque normalmente uses comandos como docker ps, docker run o docker build. La CLI de Docker es un cliente: por debajo envía peticiones al daemon para consultar, crear, arrancar o borrar objetos.
La API no es solo un detalle interno. Sirve para automatizar tareas, integrar herramientas, inspeccionar el estado del daemon y entender mejor qué ocurre entre tu terminal y Docker Engine. También implica riesgos: si alguien controla la API o el socket del daemon, puede tener mucho control sobre el host.
👉 Y recuerda, si quieres aprender más de Linux, pincha en este curso de Linux gratis.
🐳 Si quieres aprender más de Docker, pincha en este curso de Docker gratis.
Docker API
Problema: los comandos de Docker parecen acciones locales simples, pero en realidad necesitan comunicarse con un servicio que gestiona imágenes, contenedores, redes, volúmenes y configuración.
Qué aporta Docker: la API expone una forma estándar de hablar con el daemon. La CLI oficial la usa, y otras herramientas también pueden usarla para automatizar operaciones o consultar el estado del motor.
| Pieza | Qué hace | Ejemplo |
|---|---|---|
| Docker CLI | Cliente que traduce comandos a peticiones. | docker ps, docker run, docker build. |
| Docker API | Interfaz HTTP del daemon. | Endpoints para contenedores, imágenes, redes y versión. |
| dockerd | Daemon que recibe peticiones y coordina Docker Engine. | Gestiona objetos y delega en runtimes. |
| Socket Unix | Canal local habitual en Linux. | /var/run/docker.sock. |
Cómo la usa la CLI
Cuando ejecutas un comando, la CLI prepara una petición para el daemon. Por ejemplo, listar contenedores no significa que la CLI lea todos los procesos por su cuenta: pide esa información al servidor de Docker.
docker ps
# La CLI usa la API del daemon por debajo para pedir información similar.Esta separación ayuda a entender errores típicos: si la parte Server de docker version falla, normalmente el problema no está en el comando, sino en la comunicación con el daemon o en el servicio Docker.
Consultas básicas con el socket Unix
En Linux, el daemon suele escuchar en un socket Unix local. Puedes consultarlo con curl para entender la idea, sin abrir ningún puerto de red. Estos ejemplos son de lectura y sirven para laboratorio.
curl --unix-socket /var/run/docker.sock http://localhost/_ping
curl --unix-socket /var/run/docker.sock http://localhost/version
curl --unix-socket /var/run/docker.sock http://localhost/containers/json- /_ping comprueba si el daemon responde.
- /version muestra información del servidor y de la API.
- /containers/json lista contenedores visibles para el daemon.
Importante: poder leer el socket normalmente implica permisos altos. No des acceso a /var/run/docker.sock a usuarios o contenedores si no entiendes el impacto.
Automatización y casos de uso
- Paneles internos que muestran contenedores, imágenes o consumo de recursos.
- Herramientas de CI/CD que construyen imágenes o preparan entornos efímeros.
- Scripts de auditoría que consultan versión, contenedores o configuración.
- Integraciones que necesitan reaccionar ante eventos del daemon.
Aun así, no conviertas la API en un atajo inseguro. Muchas tareas se pueden resolver con la CLI, Compose o herramientas ya preparadas sin exponer el daemon a la red.
Riesgos de seguridad
Exponer TCP sin protección
Abrir el daemon por TCP sin TLS ni autenticación fuerte es peligroso. Si alguien alcanza ese endpoint, puede crear contenedores, montar rutas del host o manipular imágenes.
# Ejemplo de riesgo: NO expongas esto sin TLS y control de acceso
dockerd -H tcp://0.0.0.0:2375Montar el socket en contenedores
Montar /var/run/docker.sock dentro de un contenedor puede parecer cómodo para automatizar despliegues, pero ese contenedor podría controlar el host a través del daemon. Es una decisión de seguridad, no solo una opción técnica.
Permisos del grupo docker
En muchos sistemas, pertenecer al grupo docker permite hablar con el daemon local. Trátalo como un permiso sensible y no como un simple acceso de usuario normal.
Errores comunes
- Confundir Docker API con Docker Hub API: una habla con tu daemon; la otra con servicios de registro o cuentas.
- Pensar que la API solo sirve para desarrolladores avanzados; también ayuda a entender cómo trabaja la CLI.
- Abrir el puerto 2375 para “probar rápido” y olvidarlo expuesto.
- Dar acceso al socket a contenedores de terceros sin aislar ni auditar el riesgo.
- Depurar un error de CLI sin comprobar primero si el daemon responde.
Lecciones relacionadas del curso Docker
- Docker Engine: entiende el motor que expone la API.
- guía completa de Docker: índice principal del curso.
- qué es dockerd: repasa el daemon que recibe las peticiones.
- qué problema resuelve Docker: vuelve a la base antes de profundizar en internals.
Documentación oficial y recursos
- Docker Engine API reference: referencia oficial de endpoints.
- Docker Engine API overview: explicación oficial de uso de la API.
- Protect the Docker daemon socket: guía oficial sobre seguridad del socket.
- dockerd CLI reference: opciones oficiales del daemon.
Entender la API te ayuda a ver Docker como un sistema cliente-servidor: la CLI pide, el daemon decide y los runtimes ejecutan. Esa idea aclara muchos errores de comunicación, permisos y automatización.
Para empezar, usa la API solo en laboratorio y de forma local. Si necesitas exponerla o integrarla en producción, revisa TLS, permisos, auditoría y alternativas más seguras antes de abrir acceso al daemon.

