DZone Refcardz Java Containerization con Docker

En este nuevo Refcardz

El equipo de DZone nos presentan Docker desde el punto de vista de contenedores para Java.

La Arquitectura Docker:

Donde el cliente Docker le pide al Docker daemon vías Sockets o RESTful que construya, ejecute y distribuya los contenedores Docker:

Terminología

· Docker Images Read-only templates that use union file systems to combine layers—making them very lightweight. Images are built from Dockerfiles.

· Docker Registries Store Docker images. Users can push (or publish) their images to a public registry (like Docker Hub) or to their own registry behind a firewall. Registries store the “tagged” images—allowing users to maintain different versions of the same image.

· Docker Containers Virtualized application environments that run on a Docker Host in isolation. Containers are launched from Docker images, adding a read-write layer on top of the image (using a union file system) as well as the network/bridge interface and IP address. When a container is launched, the process specified in the Dockerfile is executed and the logs are captured for auditing and diagnostics.

· Dockerfiles Composed of various commands (instructions) listed successively to automatically perform actions on a base image in order to create a new one. The instructions specify the operating system, application artifacts, data volumes, and exposed ports to be used, as well as the command (or script) to run when launching a Docker container.

· Docker Host A Linux host (either a physical/bare-metal server or a virtual machine) that is running a Docker daemon on which images can be built, pulled or pushed and containers can run in isolation.

· Docker Client Command-line utility or other tool that takes advantage of the Docker API (docs.docker.com/reference/api/docker_ remote_api) to communicate with a Docker daemon

Docker con Java:

Docker puede usarse para empaquetar una JVM junto a los JARs y WARs y otras partes de la aplicación en un contenedor que puede ejecutar en cualquier host Linux, eliminando la complejidad de versions de librerías.

Contenizar aplicaciones Java es complejo, por suerte DCHQ ofrece un framework de composición que extiende Docker Compose.

Una vez la aplicación se ha provisionado se puede monitorizar la CPU, memoria, I/O del contenedor, notificaciones,…

Leer más

¿Qué es H2O?

H2O es una plataforma Machine Learning open-source desarrollada en Java.

Ofrece un gran conjunto de algoritmos ML y un UI de procesamiento (H2o Flow).

Permite desarrollar aplicaciones ML en diversos lenguajes: Java, Scala, Python y R y ofrece interfaces con Spark, HDFS, Amazon S3 y BD NoSQL.

2 de sus componentes más interesantes son H2O Flow y Sparkling Water:

H2O Flow: es un notebook web (similar a iPython o Zeppelin) para H20 y que permite combinar ejecución de código, texto, fórmulas, gráficos,…

Ofrece características muy interesantes como:

· Carga ficheros locales:

· Parseo de ficheros: (ARFF XLS XLSX CSV SVMLight):

· Modelos ML:

Soportando modelos K-means, Generalized Linear Model, Distributed RF, Naïve Bayes, Principal Component Analysis, Gradient Boosting Machine y Deep Learning.

Sparkling Water permite combinar los algoritmos ML de H20 con las capacidades de Spark, puede usarse como librería o desde H2O Flow.

Más información

¿Qué es Jaggery?

Jaggery es un framework con licencia Apache 2.0 para escribir aplicaciones y servicios Web completas:Front-end, comunicación, lógica en Servidor y persistencia, todo ello en Javascript.

Las aplicaciones Jaggery se despliegan sobre el Jaggery Server (un Servidor Java construido sobre WSO2 Carbon Runtime), y ofrece una consola que permite desplegar y gestionar aplicaciones Jaggery:

También ofrece una CLI para desplegar apps vía línea de comandos.

Entre sus herramientas tenemos un Editor para IntelliJ y un Debugger sobre Rhino Javascript Debugger: http://jaggeryjs.org/tools.jag

Para probarlo lo mejor es echar un ojo a sus demos.