En el código de Java que necesito para manejar contenedores de Docker (reiniciar, detener, iniciar ...) usando la biblioteca del estibador en Java. https://github.com/docker-java/docker-java
En los ejemplos del estibador en Java que encontré la manera de crear y obtener contenedor: https://github.com/docker-java/docker-java/wiki
DockerClient dockerClient = DockerClientBuilder.getInstance().build();
CreateContainerResponse container = dockerClient.createContainerCmd("nginx")
.exec();
System.out.println(container.getId());
dockerClient.restartContainerCmd(container.getId());
en la línea de comandos que podemos utilizar:
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4dd858fe9022 nginx "nginx -g 'daemon of…" 42 hours ago Up 42 hours 0.0.0.0:80->80/tcp webserver
Pero necesito hacerlo por código JAVA. Necesito conseguir los ID de los contenedores existentes a continuación, obtener sus direcciones IP y el uso del método restartContainerCmd para reiniciarlo.
solución encontrada. Ponerlo aquí en caso de que si alguien tiene la misma pregunta:
Construir un simple DockerClient a continuación, crear objeto ListContainersCmd y el uso del método exec (), a continuación, iterar a través de la lista de los contenedores y encontrar los asociados de contenedores con IP y a continuación, obtener recipiente Id; con Id podemos reiniciar contenedor:
DockerClient dockerClient = DockerClientBuilder.getInstance().build();
ListContainersCmd listContainersCmd = dockerClient.listContainersCmd().withShowAll(true);
for (Container container: listContainersCmd.exec()) {
if (container.toString().contains("192.168.1.105")){
dockerClient.restartContainerCmd(container.getId()).exec();
}
}