Cómo entender cómo es el software Docker

Bueno, lo primero que debe saber es que Docker no es una solución para todos sus problemas y no reemplazará tecnologías como VirtualBox, al menos no en este momento.

Los desarrolladores utilizan mucho Docker para enviar sus aplicaciones en un sistema operativo con una configuración mínima, que el desarrollador puede configurar utilizando archivos de configuración llamados dockerfiles. Por lo tanto, con Docker no tiene que preocuparse por configurar el sistema operativo o el servidor donde implementará su aplicación, todo lo configurará en su contenedor Docker con su aplicación, lo único que tendrá que preocuparse es instalar Docker y posible configuración de la red.

También puede usar docker como una forma de usar bases de datos como PostgreSQL y MySQL, servidores como NGINX. Pero lo que Docker no puede hacer es darle un sistema operativo total para que lo use. Con eso quiero decir una GUI como la que tienes en Windows y Linux, si quieres que uses VirtualBox o VMware.

Docker es liviano en comparación con VirtualBox porque no usa Hypervisor, lo que lo hace mucho más liviano y rápido que los softwares que dependen de él. Hay una pregunta sobre Quora que explica las diferencias en caso de que se pregunte ¿Cuál es la diferencia entre contenedorización (Docker) y virtualización (VMWare, VirtualBox, Xen)?

Trabaja durante unos años como ingeniero de lanzamiento para un sitio web complejo con muchos procesos y aplicaciones diferentes, tanto en el back-end como en el front-end.

Te encontrarás trabajando en intrincadas operaciones de implementación de varios pasos. “¡Empuje el código más rápido!” Justo cuando termine con una implementación, los ingenieros le dirán que arreglaron otro error y ¿podría empujar el código nuevamente, aunque necesite quedarse hasta tarde?

Luego, el sitio web deja de funcionar, y usted tiene que despertar al desarrollador principal para solucionarlo. Resulta que en su apuro, olvidó un paso del proceso de 50 pasos para la liberación, y omitió un archivo de configuración.

¿No sería bueno poder automatizar todo este trabajo? ¿No es esto para lo que se supone que deben usarse las computadoras?

Realmente le gustaría empaquetar todos los archivos necesarios para la publicación de un código antes de enviar cualquiera de ellos. Desea que este paquete tenga una secuencia de comandos, por lo que no tiene que seguir largas listas de verificación cada vez. Desea que se incluyan todos los archivos requeridos.

Aún mejor, le gustaría crear el paquete, dejar que los desarrolladores y QA lo prueben antes de lanzarlo al sitio web en vivo, y luego usar exactamente el mismo paquete que probaron cuando lo lanzó.

Eso es lo que Docker puede hacer. Al describir cada paso de una compilación y lanzamiento de software con un Dockerfile, logra todo eso. Su lista de verificación se sigue automáticamente. La salida es una imagen de Docker, que está lista para implementarse en el servidor de un probador o en el servidor de producción. Es rápido y reproducible.

Aquí hay una analogía:

Un compilador lee el código y produce un solo archivo de código ejecutable, que puede mover fácilmente de una computadora a otra y ejecutarlo en cualquier lugar. Si cambia el código, puede volver a compilar en un solo paso. Luego puede ejecutar ese archivo en diferentes entornos, potencialmente incluso ejecutar múltiples procesos al mismo tiempo, y se ejecutan de forma independiente.

Eso es análogo al ciclo de vida de Docker, excepto que el Dockerfile es como un Makefile, el resultado de construir una imagen no es solo un archivo ejecutable, sino un tipo de paquete con una colección completa de programas y archivos de soporte, bibliotecas, etc. Luego puede implemente esa imagen de Docker en cualquier lugar y ejecútela, potencialmente varias veces.

More Interesting

¿Cómo funciona la recolección de basura en la JVM?

¿Qué competencias y qué servicios debemos suscribir para construir un mensajero cifrado para un potencial de 50,000 usuarios?

¿Cómo pasan la vida los ingenieros de software?

¿Es una mala señal si, como programador / ingeniero de software, sientes que es casi inútil (y por lo tanto no estás tan motivado) construir algo común que ya se ha construido?

¿Cuáles son los proyectos interesantes de Apache con los que todos los desarrolladores deberían estar familiarizados?

¿Cómo se rastrea la velocidad de apertura de procesos en Linux?

¿Qué es el sistema de archivos de una PC?

¿Cuál es la diferencia entre un SILC y un SDLC?

¿Cuál es la razón detrás de 'las grandes empresas de software que no abren sus sucursales en Coimbatore'?

¿Por qué usaría o no utilizaría Mendix o OutSystems para el desarrollo rápido de aplicaciones comerciales?

¿Cuáles crees que son las razones principales por las que la mayoría de los equipos de ingeniería son tan homogéneos?

¿He demostrado que he entregado software de alta calidad si le dije a mi cliente a través de pruebas unitarias y pruebas de extremo a extremo?

Como desarrollador de software, ¿qué tan importante es dominar las secuencias de comandos bash?

¿Qué quiere decir Alan Kay con 'negociar significado' entre 2 servidores de comunicación? (oponiéndose explícitamente al concepto de API)

Dejé de codificar durante 6 meses y ha sido realmente difícil recuperarlo. ¿Cómo puedo evitar que esto vuelva a ocurrir y mantener mis habilidades?