¿Por qué debería preocuparme por Docker? Dinámica de servicio de aplicaciones Java y almacén de Docker

¿Qué es Docker?

Docker es un nuevo método de virtualización. Si conoce la virtualización, omita la siguiente parte. De lo contrario, debe tener un conocimiento básico de virtualización antes de que pueda ayudarlo a comprender Docker.

¿Qué es la virtualización?

¿Por qué debería preocuparme por Docker?  Dinámica de servicio de aplicaciones Java y almacén de Docker

 

Comencemos con una analogía: supongamos que tienes una casa. Tienes un amigo que necesita un lugar para decir. Si quieres ayudar a tus amigos, tienes algunas opciones.

Traiga a sus amigos a su dormitorio. Esto puede ser un poco nervioso.

Construye una nueva casa para tus amigos en tu propiedad. Ésta es una solución cara.

Invite a sus amigos a quedarse en la habitación de invitados. Ahora estamos en alguna parte ...

La tercera opción es muy buena. Puedes ayudar a tus amigos en lugar de construirles nuevas casas, pero al mismo tiempo mantener tu vida mayormente separada. Compartirás algunos recursos comunes como la cocina y la sala de estar, pero puedes entrar a tu dormitorio y cerrar la puerta para tener algo de privacidad.

La virtualización es como organizar a tus amigos en tu habitación de invitados. Imagina que quieres ejecutar un servidor web en tu computadora. Desea separarlo de su propio sistema operativo y aplicaciones. Para hacer esto, puede ejecutar una máquina virtual que contenga un servidor web . Funciona como una computadora independiente, pero usa el procesador y la RAM de la computadora. Cuando se inicia una máquina virtual, todo su sistema operativo se mostrará en una ventana dentro del sistema operativo.

¿En qué se diferencia Docker?

Docker es un tipo diferente de virtualización. Si una máquina virtual típica empaqueta el sistema operativo con la aplicación que está ejecutando, Docker compartirá tanto como sea posible entre los sistemas virtualizados. Esto hace que utilicen menos recursos en tiempo de ejecución y facilita su transferencia a otros desarrolladores o entornos de producción.

Si está aprendiendo desarrollo web por su cuenta, es difícil saber qué aprender a continuación. Regístrese en el curso de tutoría gratuito de Rad Radon, ¡le proporcionaremos los próximos pasos para su carrera de desarrollo web!

¿Por qué los desarrolladores deberían usar Docker?

Docker proporciona algunos superpoderes geniales para los desarrolladores web .

Comparta fácilmente el entorno de desarrollo

Si usted y yo queremos colaborar en la aplicación Node, debemos asegurarnos de que ambos tenemos Node instalado y que son de la misma versión para que nuestro entorno sea coherente. Podemos omitir esto y esperar lo mejor, pero puede causar problemas que es posible que tengamos dificultades para reducir. En diferentes versiones de Node, la biblioteca y nuestro propio código a veces se comportan de manera diferente.

La solución es asegurarnos de que todos tengamos la misma versión de Node. Sin embargo, si cada uno de nosotros ya tiene otros proyectos en nuestro sistema que requieren otras versiones de Node, es posible que deseemos instalar NVM para poder cambiar las versiones de Node fácilmente. Luego, podemos agregar el archivo .nvmrc al directorio raíz del proyecto, especificando la versión general que queremos.

Solo necesitamos hacer esto una vez, por lo que nuestro trabajo ahora está completo. Con todo, esto es lo que debemos hacer:

Determine la versión del nodo.

Instale NVM.

Instale la versión de Nodo de nuestra elección.

Agregue .nvmrc al directorio del proyecto y configure la versión de nodo correcta.

Inicie la aplicación.

Funciona, pero es mucho. Para otras personas que queremos unirnos a este proyecto, tenemos que hacer la mayor parte del trabajo nuevamente. Incluso si tomamos todos estos pasos, todavía no podemos garantizar que todos los desarrolladores tengan el mismo entorno . Los desarrolladores que ejecutan diferentes sistemas operativos o incluso diferentes versiones del mismo sistema operativo pueden verse interrumpidos.

Docker nos permite resolver todos estos problemas proporcionando el mismo entorno de desarrollo para todos los desarrolladores. En cambio, con Docker, tomaremos las siguientes medidas:

Instale Docker.

Escribe un Dockerfile.

Ejecute docker build -t <nombre de la imagen>. El nombre de la imagen puede ser cualquier nombre que elija.

Ejecute docker run -p 3000: 3000 <nombre de la imagen>. La opción "p" asigna el puerto del contenedor al puerto local. Esto le permite acceder al puerto 3000 en su computadora, que se asignará al puerto 3000 en el contenedor. Utilice el mismo nombre de imagen que en el paso 3.

Esto no parece ser mucho más simple que la configuración de Nodo / NVM (de hecho, no lo es). Aporta ventajas. Independientemente de su pila de tecnología, solo necesita instalar Docker una vez . Por supuesto, solo necesita instalar Node una vez (a menos que necesite varias versiones), pero cuando esté listo para manejar aplicaciones en diferentes pilas, debe instalar todas las pilas de software que necesite. Con Docker, solo necesita escribir un Dockerfile diferente (o un archivo de Docker Compose, según la complejidad de la aplicación).

El Dockerfile es muy simple: es un archivo de texto llamado "Dockerfile" sin extensión. Echemos un vistazo al Dockerfile que podría usar para una aplicación de nodo simple.

<span style="color:rgba(0, 0, 0, 0.843137)">
</span>
<span style="color:rgba(0, 0, 0, 0.843137)">
</span>
<span style="color:rgba(0, 0, 0, 0.843137)">
</span>
<span style="color:rgba(0, 0, 0, 0.843137)">
</span>

Este Dockerfile está escrito para una aplicación de nodo que escucha en el puerto 3000 y se inicia desde el comando npm start. Envíe esto al repositorio de su proyecto y comenzar a trabajar para los nuevos desarrolladores se vuelve muy simple y 100% consistente: cada desarrollador obtiene el mismo entorno en todo momento.

Desarrollar en el mismo entorno que la producción

Una vez que la aplicación está en funcionamiento en el entorno de desarrollo de Docker, puede enviar el contenedor completo directamente al entorno de producción. Si cree que es doloroso lidiar con la contradicción entre los dos desarrolladores, simplemente espere hasta que escriba el código que se ejecuta en su máquina solo para que no funcione en producción . Esto es muy frustrante.

Tiene muchas opciones para implementar contenedores Docker en un entorno de producción. Aquí están algunas:

AWS ECS (tutorial oficial)

Océano digital (tutorial)

Heroku (tutorial oficial)

sloppy.io (tutorial oficial)

Me gusta el método de Heroku porque es el único método que le permite simplemente impulsar sus proyectos con Dockerfile para que se ejecuten. Otros necesitan realizar varios pasos, como enviar la imagen de Docker al repositorio. Los pasos adicionales no son el fin del mundo, pero no son necesarios.

¿Qué pasa con las aplicaciones más complejas?

Debido a la filosofía de Docker (un proceso por contenedor), la mayoría de las aplicaciones requerirán múltiples contenedores . Por ejemplo, un sitio de WordPress debe contener un contenedor para un servidor web que ejecute PHP y un contenedor para una base de datos MySQL. Esto significa que necesita alguna forma para que el contenedor hable. Esto se llama orquestación de contenedores .

Si puede ejecutar todos los contenedores en un solo host, Docker Compose puede satisfacer sus necesidades de orquestación. Se incluye al instalar Docker y es fácil de aprender. Le permite iniciar varios contenedores al mismo tiempo y establecer una red entre ellos para que puedan comunicarse entre sí. Esta es la forma más rápida y sencilla de organizar varios contenedores.

Si necesita coordinar contenedores dispersos en varios hosts, Kubernetes es la solución principal. Muchos hosts que admiten la implementación de Docker proporcionan Kubernetes para la orquestación.

Ganancia rápida al comprender Docker

Puede que ahora no parezca importante, pero cuando se encuentre por primera vez con problemas causados ​​por diferencias ambientales, envíe este conocimiento. No quieres que vuelva a suceder. Si aprende Docker, podrá garantizar un entorno coherente para su aplicación , sin importar dónde o quién se ejecute. Esto significa resultados consistentes en los que usted, sus clientes y su empleador pueden confiar .

¡Sígueme para más productos secos!

Supongo que te gusta

Origin blog.csdn.net/qq_45401061/article/details/108740936
Recomendado
Clasificación