Pique #19: Cómo exponer la API de Docker

Estaba haciendo unas pruebas contra la API de Docker y por defecto, no viene habilitada la "opción" para consumirla remotamente. En este artículo te muestro como habilitarla.

Atención: Esto es para usar en un ambiente de pruebas, no recomiendo exponer la API hacia Internet. Últimamente hay muchos casos donde malware hacen uso de esa API expuesta de manera insegura.

Para habilitar la exposición de la API, debemos editar el siguiente archivo:

$ vim /lib/systemd/system/docker.service

Buscamos lo siguiente:

ExecStart

La línea que veremos, por defecto, se verá algo así:

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Y nosotros le agregaremos lo siguiente, para que se vea así:

ExecStart=/usr/bin/dockerd -H fd:// -H=tcp://0.0.0.0:2375 --containerd=/run/containerd/containerd.sock

Guardamos y cerramos y ejecutamos lo siguiente:

$ sudo systemctl daemon-reload

Y por último:

$ sudo systemctl restart docker

Para comprobar que esta todo bien, podemos consultar las imágenes de Docker que tenemos descargadas. Lo hacemos, de la siguiente manera:

$ curl http://docker-host:2375/images/json

Nos debería devolver algo como esto:

[{"Containers":-1,"Created":1596503345,"Id":"sha256:51f43ca5bbf8fd3f76b3daa3bc280109463660feaf62b5d1f359637f1f032f39","Labels":null,"ParentId":"","RepoDigests":["portainerci/agent@sha256:df840cd4fcec3d6248fc334e1ed7e65b5ca7fa3d01655a1b050e76e12c558a0e"],"RepoTags":["portainerci/agent:develop"],"SharedSize":-1,"Size":89848087,"VirtualSize":89848087}]

Así que eso es todo, podemos usar la API para monitorear remotamente el host o bien, para conectar herramientas de Management como Portainer.

¿Dudas o consultas? no dudes en dejar un comentario.