Construir Imágenes Utilizando Apis
En la receta anterior, exploramos algunas acciones sobre imágenes de Docker utilizando apis. En esta receta, construiremos una imagen de Docker utilizando la api /build. A continuación, se muestra el fragmento de la api /build desde Swagger Editor:

Cómo hacerlo…
- Comience clonando el repositorio https://github.com/docker-cookbook/apache2, de la siguiente manera:
$ git clone https://github.com/docker-cookbook/apache2
Este repositorio contiene el Dockerfile para empaquetar un servicio apache2; a continuación, se muestra el contenido del Dockerfile:

- Creemos el contexto de construcción empaquetando el contenido del repositorio
apache2clonado como un archivo tar, como se demuestra a continuación:
$ cd apache2
$ tar cvf /tmp/apache2.tar *
- Continúe construyendo la imagen de Docker utilizando la api
/build:
$ curl -X POST \
-H "Content-Type:application/tar" \
--data-binary '@/tmp/apache2.tar' \
--unix-socket /var/run/docker.sock \
http:/build
Mientras la construcción esté en progreso, recibirá los registros de construcción como una serie de mensajes JSON. Una vez que la construcción se complete con éxito, recibirá un mensaje JSON como el siguiente:
{"stream":"Successfully built 3c6f5044386d\n"}
En el mensaje JSON anterior, 3c6f5044386d es el ID de la imagen que acabamos de construir utilizando la api /build.
Cómo funciona…
En esta receta, empaquetamos el contexto de construcción como un archivo tar y lo enviamos al motor de Docker como parte de la llamada a la api /build. El motor de Docker utiliza el contexto de construcción y el Dockerfile en el contexto de construcción para construir la imagen de Docker.
Hay más…
- En esta receta, no especificamos ningún nombre de repositorio o etiqueta, y por lo tanto la imagen se crea sin ningún nombre de repositorio o etiqueta, como se muestra a continuación:
$ curl -s --unix-socket /var/run/docker.sock \
http:/images/json | jq ".[0].RepoTags"
[
"<none>:<none>"
]
Por supuesto, ahora puede etiquetar la imagen con el nombre de repositorio y etiqueta adecuados utilizando la api /images/{name}/tag. A continuación, se muestra el fragmento de la documentación de ayuda del editor Swagger:

Alternativamente, puede empaquetar la imagen con el nombre de repositorio durante la construcción utilizando el parámetro t, como se demuestra a continuación:
$ curl -X POST \
-H "Content-Type:application/tar" \
--data-binary '@/tmp/apache2.tar' \
--unix-socket /var/run/docker.sock \
http:/build?t=apache2:usingapi
El nombre de la etiqueta es opcional y si no se especifica, el motor de construcción de Docker asumirá la etiqueta latest.
- También puede crear una imagen a partir de un contenedor utilizando la siguiente api:
![]()
A continuación, se muestra un ejemplo de confirmación de una imagen a partir de un ID de contenedor 4aaec8980c43:

Ver también
Cada punto final de la api puede tener diferentes entradas para controlar las operaciones. Para obtener más detalles, visite la documentación en el sitio web de Docker en https://docs.docker.com/engine/api/latest/.