Grabación de vídeo de Docker para desarrolladores Java ya está disponible:

He aquí las respuestas a las preguntas formuladas:

  • ¿Qué opina de Kubernetes en comparación con Docker y Docker Swarm? ¿Kubernetes o Docker Swarm? ¿Qué camino tomar?Depende ;)Docker Swarm tiene una curva de aprendizaje mucho más sencilla que Kubernetes. Kubernetes es muy opinable pero puede ser muy potente una vez que entiendes cómo funciona. Algunos de los puntos que vale la pena considerar son:
    • Fácil de instalar y poner en marcha
    • Necesidad de aprender nuevos conceptos o alineado con Docker
    • Cómo puede adaptarse a su flujo de trabajo actual
    • Maestro único o múltiple
    • Compatibilidad con varias nubes
    • Agrupación en varias nubes
    • Escalado dinámico ascendente/descendente
    • Reprogramación de contenedores en caso de fallo de nodo/contenedor
    • Estrategias de programación conectables (si quieres ir a lo grande)
    • Descubrimiento de servicios
    • Volúmenes persistentes

    Si esta pregunta se formuló hace unos meses, entonces Kubernetes habría sido la elección obvia. Pero Docker Swarm está lanzando nuevas versiones y características y se ha puesto al día. Echa un vistazo a Docker Swarm supera el rendimiento de Kubernetes a escalaHackernews también tiene un interesante debate sobre este tema. Lea también Evaluación de plataformas de contenedores a escala.

    Además, también debe tener en cuenta Mesos+Maratón o DC/OS.

    Aquí tienes algunos blogs para empezar:

  • ¿Cuál es la mejor práctica para desarrollar en un contenedor docker WildFly si no se desea empaquetar el archivo WAR después de cada cambio, sino utilizar un archivo explosionado para, por ejemplo, volver a empaquetar los recursos estáticos? Docker permite asignación de directorios del sistema de archivos como volúmenes en el contenedor. Esto puede utilizarse para desarrollar su aplicación en un contenedor WildFly sin necesidad de agrupar el WAR con cada cambio. Esto se explica con más detalle en Despliegue en WildFly Docker desde Eclipse.
  • ¿IntelliJ Idea soporta docker nativo en Mac OS/Windows?Andrey: Todavía no, pero está en la hoja de ruta.
  • ¿Cuáles son los pros y los contras de proporcionar una variable de entorno frente a un enlace como consul:consul? Los enlaces Docker son heredados, por lo que las variables de entorno y Redes Docker son la forma recomendada de crear nuevas aplicaciones. Lee más detalles en otra respuesta más abajo.
  • ¿Cómo adjuntar un depurador a un proceso Java que se ejecuta en un contenedor? Lea esta magnífica entrada de blog de Daniel Bryant en Depuración de aplicaciones Java ejecutadas en Docker.
  • ¿Cuál es la relación entre Docker y Vagrant? ¿Pueden ambos trabajar juntos? ¿Es Docker un sustituto de Vagrant?Docker y Vagrant solucionan problemas diferentes.Vagrant le permite aprovisionar Máquinas Virtuales independientes de la máquina anfitriona. Esto se hace mediante el uso de un hipervisor, como VirtualBox. La definición de la máquina virtual se almacena en un archivo Vagrantfiley define cómo configurar la VM y qué scripts aprovisionar el entorno. Estas máquinas virtuales pueden crearse en Linux, Windows o Mac.Docker permite crear contenedores. Es una tecnología nativa de Linux basada en lxc y llegará a Windows Server 2016 este verano. Docker para Mac proporciona un entorno de desarrollo para Mac. Vagrantfile que aprovisiona Ubuntu o CentOS usando Virtual Box. A continuación, ejecute apt get o yum install para instalar Docker Engine. Si una nueva versión de Docker Engine está disponible, entonces usted es responsable de actualizar la imagen de Vagrant también, o ejecutar el script de nuevo. Otra opción es utilizar Docker Machine y utilizar el controlador VirtualBox para crear una máquina que tendrá instalado Docker Engine. El docker-machine tiene comandos como upgrade que simplemente actualiza el motor Docker.Algunas discusiones más interesantes están en StackOverflow y QuoraPara hacer más interesante toda esta ecuación, Vagrant puede ser respaldado por contenedores Docker en lugar de máquinas virtuales.
  • Falta la ventana de la herramienta Docker en mi IntelliJ IDEA 15. El plugin está instalado.Andrey: La ventana de herramientas separada se añadió en 2016.1. Antes, Docker formaba parte de la ventana de herramientas Servidores de aplicaciones.
  • ¿Es posible cambiar index.jsp y ver el cambio en el navegador sin construir la imagen de nuevo? ¿En el espíritu de la acción de actualización de recursos en IntelliJ IDEA? Andrey: Suena como una gran idea. Por favor, envíalo como una solicitud de función al rastreador: https://youtrack.jetbrains.com/issues/IDEA.
  • ¿Existe un aumento de rendimiento al utilizar xhyve/Hyper-V en lugar de VirtualBox? Docker para Mac ejecuta Docker Engine en la distribución Alpine Linux sobre xhyve Virtual Machine para Mac OS X o sobre Hyper-V en Windows. xhyve está construido sobre Hipervisor.framework en OS X 10.10+. Algunas de las principales ventajas de utilizar una tecnología nativa frente a un hipervisor de tipo 2 son la apariencia nativa, un mejor rendimiento y una mejor gestión del volumen. xhyve vs VirtualBox pruebas de controladores. Este ámbito evoluciona rápidamente y hay que estar atentos. blog.docker.com para más detalles.
  • En Docker Compose¿Cómo puedo actualizar sólo un contenedor? ¿Se pierde el "enlace"? ¿Tengo que volver a desplegarlo todo? Los enlaces Docker son ahora heredados. Se recomienda encarecidamente migrar su aplicación para utilizar Redes Docker. En principal diferencia entre Enlaces y Redes son:
    1. Conectar contenedores entre sí a través de distintos hosts físicos o virtuales
    2. Los contenedores que utilizan redes pueden detenerse, iniciarse y reiniciarse fácilmente sin interrumpir las conexiones con otros contenedores.
    3. No es necesario crear un contenedor para enlazar con él. Con el trabajo en red, los contenedores pueden crearse en cualquier orden y descubrirse mutuamente utilizando sus nombres.
  • ¿Cómo se puede exponer un puerto de host a un contenedor que se ejecuta en el host? Los puertos de un contenedor se exponen en el host mediante -p con docker run. Se puede acceder a los puertos del host mediante : directamente.
  • La imagen Java Docker oficial (basada en OpenJDK) no está certificada por TCK. ¿Qué sugieres en este caso? OpenJDK es la implementación de referencia de Java SE y, por tanto, es compatible con TCK. Imagen Java Docker oficial se basa en OpenJDK.Azul Systems proporcionar soporte comercial para OpenJDK. Otra opción es utilizar Imágenes de OpenJDK disponibles en Azul systems. Se trata de compilaciones totalmente probadas y de compatibilidad verificada de las últimas versiones de las plataformas OpenJDK 8, 7 y 6. Oracle publica Dockerfile para JDK pero no publica las imágenes. Tenga en cuenta que esta definición utiliza oraclelinux:último como imagen de base y es posible que desee utilizar ubuntu, centos o alpino. En este caso, puede crear su propio Dockerfile. ¿Ejecutar Java en Docker? Estás infringiendo la ley ofrece un buen resumen de por qué las imágenes basadas en Oracle JDK no deberían enviarse a Docker Hub.
  • ¿Cómo hacer que un contenedor con WildFly utilice un contenedor con la base de datos en otro servidor? Enlaces Docker son heredados y sólo permiten que los contenedores se comuniquen entre sí en el mismo host. La forma recomendada para que dos contenedores se comuniquen es utilizando Redes DockerPor defecto, el cluster Docker Swarm crea un cluster red superpuesta que permite que varios contenedores se comuniquen entre hosts.Aplicaciones multicontenedor y multihost usando WildFly y Couchbase muestra cómo conectar WildFly con Couchbase donde cada contenedor se ejecuta en dos hosts separados en un clúster Docker Swarm. Aquí está el archivo Compose como referencia:

Aquí tiene más referencias:

Autor

Publicado por Arun Gupta, Vicepresidente, Defensa del Desarrollador, Couchbase

Arun Gupta es vicepresidente de promoción de desarrolladores en Couchbase. Ha creado y dirigido comunidades de desarrolladores durante más de 10 años en Sun, Oracle y Red Hat. Tiene una gran experiencia en liderar equipos multidisciplinares para desarrollar y ejecutar estrategias, planificar y ejecutar contenidos, campañas de marketing y programas. Anteriormente dirigió equipos de ingeniería en Sun y es miembro fundador del equipo Java EE. Gupta es autor de más de 2.000 entradas de blog sobre tecnología. Tiene una amplia experiencia como conferenciante en más de 40 países sobre innumerables temas y es una JavaOne Rock Star desde hace tres años consecutivos. Gupta también fundó el capítulo Devoxx4Kids en Estados Unidos y sigue promoviendo la educación tecnológica entre los niños. Autor de varios libros sobre tecnología, ávido corredor, trotamundos, campeón de Java, líder de JUG, miembro del Dream Team de NetBeans y capitán de Docker, es fácilmente accesible en @arungupta.

Dejar una respuesta