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 escala. Hackernews 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
Vagrantfile
y 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 enlxc
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, ejecuteapt get
oyum 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. Eldocker-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:
- Conectar contenedores entre sí a través de distintos hosts físicos o virtuales
- Los contenedores que utilizan redes pueden detenerse, iniciarse y reiniciarse fácilmente sin interrumpir las conexiones con otros contenedores.
- 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 utilizarubuntu
,centos
oalpino
. 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:
123456789101112131415mycouchbase:nombre_contenedor: "db"imagen: couchbase/servidorpuertos:- 8091:8091- 8092:8092- 8093:8093- 11210:11210mywildfly:imagen: arungupta/mosca salvaje-adminmedio ambiente:- COUCHBASE_URI=dbpuertos:- 8080:8080- 9990:9990
Aquí tiene más referencias:
- Más información sobre IntelliJ y Docker en jetbrains.com/idea/docker/
- Taller autodidacta sobre Docker para desarrolladores Java
- Docker para desarrolladores Java Diapositivas introductorias
- Script para demostración de Docker e IntelliJ que se muestra en el vídeo
- Documentación sobre Docker
- Couchbase en contenedores