Docker API: qué es y cómo utilizarla

docker-api
docker-api

La Docker API: qué es y cómo utilizarla es la interfaz que conecta el cliente docker con dockerd. La CLI la usa para consultar y gestionar imágenes, contenedores, redes y volúmenes; otras herramientas también pueden automatizar tareas mediante sus endpoints. En esta guía verás cómo funciona esa comunicación y qué riesgos implica exponerla.

La API también es una frontera de seguridad: quien puede controlarla normalmente puede crear contenedores y montar rutas del host. Mantén las pruebas locales y usa autenticación y TLS si necesitas acceso remoto.

👉 Y recuerda, si quieres aprender más de Linux, visita el curso de Linux gratis.

🐳 Si quieres aprender más de Docker, visita el curso de Docker gratis.

Qué problema resuelve la 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.

PiezaQué haceEjemplo
Docker CLICliente que traduce comandos a peticiones.docker ps, docker run, docker build.
Docker APIInterfaz HTTP del daemon.Endpoints para contenedores, imágenes, redes y versión.
dockerdDaemon que recibe peticiones y coordina Docker Engine.Gestiona objetos y delega en runtimes.
Socket UnixCanal local habitual en Linux./var/run/docker.sock.

Docker API: cómo la utiliza 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 de Docker API con el socket Unix

En Linux, el daemon suele escuchar en un socket Unix local. Puedes consultarlo con curl sin abrir un puerto de red. Obtén la versión de API negociada por el cliente con docker version –format ‘{{.Client.APIVersion}}’. El ejemplo asigna ese valor a API_VERSION y lo incorpora en cada ruta, así no dependes de un número ficticio. La CLI oficial negocia la comunicación automáticamente; los clientes propios deben usar una versión compatible con el daemon.

API_VERSION="$(docker version --format '{{.Client.APIVersion}}')"
curl --unix-socket /var/run/docker.sock "http://localhost/v${API_VERSION}/_ping"
curl --unix-socket /var/run/docker.sock "http://localhost/v${API_VERSION}/version"
curl --unix-socket /var/run/docker.sock "http://localhost/v${API_VERSION}/containers/json"
  • /_ping comprueba si el daemon responde; el bloque construye la ruta con el prefijo de versión del servidor.
  • /version muestra información del servidor y de la API.
  • /containers/json lista los contenedores en ejecución; añade ?all=1 para incluir también los detenidos.

El endpoint /version devuelve información del servidor y de la API. Comprueba que la consulta responde antes de automatizarla y mantén el cliente alineado con una versión compatible del daemon. La CLI oficial se encarga de negociar la comunicación automáticamente.

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 de Docker API

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:2375

Montar 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.

Documentación oficial y recursos

Lecciones relacionadas del curso

Comentarios

No hay comentarios aún. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *