Desarrollo Docker: Conectándonos al API Rest de Docker desde Java

07-08-2016
 
Docker Api Rest

Docker Api Rest

Existen varias librerías Java para conectarnos a la API Rest de Docker y poder hacer cosas tan ‘guais’ como crearnos nuestro panel de control centralizado de nuestro cluster de servidores o gestionar remotamente desde un punto toda nuestra instalación. Existen un sin fin de aplicaciones.

Para poder crearnos nuestra aplicación Java que interactúe con nuestra instalación Docker primero deberemos crear nuestra aplicación. En este caso usaremos Gradle, el fichero para crear la aplicación seria el siguiente:

apply plugin:'application'
mainClassName = "com.lostsys.docker.Main"

repositories {
	mavenCentral()
	}

dependencies {
	compile 'org.slf4j:slf4j-api:1.7.12'
	compile 'com.github.docker-java:docker-java:3.0.1'
 
	testCompile 'junit:junit:4.12'
	}

Como veis, solo tiene una dependencia destacada, que es la de la librería ‘Docker Java‘. Después tendremos que crear nuestro fichero de configuración que deberá ir en el root de nuestra aplicación y llamarse ‘docker-java.properties’ (Solo le configuro el host porque no trabajaré con TLS ni registros):

DOCKER_HOST=tcp://localhost:4243
#DOCKER_TLS_VERIFY=1
#DOCKER_CERT_PATH=/home/user/.docker/certs
#DOCKER_CONFIG=/home/user/.docker

#api.version=1.23

#registry.url=https://index.docker.io/v1/
#registry.username=dockeruser
#registry.password=ilovedocker
[email protected]

Ahora ya solo nos queda crear nuestra classe Java que de momento solamente sacará un listado de las imágenes disponibles en nuestro Host:

package com.lostsys.docker;

import java.util.List;

import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.core.DockerClientBuilder;
import com.github.dockerjava.api.model.Image;

public class Main {

	public static void main(String[] args) {
		
		 DockerClient dockerClient = DockerClientBuilder.getInstance().build();
		 List<Image> images = dockerClient.listImagesCmd().exec();
		 
		 for(int i=0; i < images.size(); i++){
			 System.out.println(images.get(i));
		     }
		    
		}
}

Como veis, crear aplicaciones que interactúen con Docker es muy fácil y esto tiene un potencial enorme.

Leave a Reply

© Albert Coronado Calzada