‫Ahora es posible que aún se esté preguntando, incluso después de conocer algunas de las funciones clave de Docker.
‫¿Por qué Docker necesita existir?
‫Obviamente, hemos estado empaquetando software durante décadas con toneladas de otros administradores de paquetes implementando software en
‫servidores.
‫Así que hablemos de eso.
‫Este video se centrará en tres cosas sobre por qué Docker y por qué ahora.
‫Y en el momento en que se creó, hubo fricción.
‫Había cosas que nos impedían pasar al siguiente nivel de velocidad y facilidad de uso del ciclo de vida del software, especialmente en lo que respecta al empaquetado,
‫la distribución y la ejecución de todo el software que estamos creando.
‫Y me gustan las listas de tres, supongo.
‫Así que esta lista principal de entornos de aislamiento y velocidad.
‫Esas tres áreas son de las que quiero hablar como las tres razones generales.
‫Siento que los contenedores mismos tenían que existir y por qué son tan populares hoy en día.
‫En primer lugar, el problema del aislamiento.
‫Y si nos remontamos al comienzo de mi carrera allá por los noventa, podemos empezar a hablar de lo
‫que solían ser los servidores antes de que tuviéramos contenedores.
‫Si retrocedemos incluso más allá de 2013, antes de que se creara Docker y hablamos de principios de la década de 2000
‫en los años noventa cuando pasamos de mainframe a PC, este podría ser el aspecto de un administrador típico.
‫Tenía un par de servidores por empresa.
‫Sabes, realmente no podríamos administrar 100 servidores por persona.
‫Nuevamente, esto fue como, ya sabes, 2000.
‫Y así tendríamos estos grandes servidores carísimos que era raro consumir todos sus recursos con una
‫sola app.
‫Entonces terminaría con todas estas aplicaciones improvisadas en el mismo servidor.
‫Y el servidor se volvió frágil.
‫Se volvió difícil de administrar porque es posible que necesite cambiar una cosa para una aplicación y luego otra aplicación necesite
‫una cosa diferente.
‫Y luego tendría que administrar sus diferentes versiones de Python o sus diferentes versiones de Apache
‫en diferentes servidores solo para equilibrarlo todo al mismo tiempo, quería poner más y más cosas en cada
‫servidor.
‫Pero nada estaba aislado, por lo que todas estas aplicaciones compartían el mismo sistema de archivos.
‫Por lo general, no podrían ser múltiples versiones de esa aplicación sin un montón de piratería complicada.
‫Y eso fue un gran problema.
‫Luego vinieron las máquinas virtuales.
‫Entonces, una vez que las máquinas virtuales se volvieron realmente populares, incluso antes de la nube, pudimos abstraer todas
‫nuestras aplicaciones y comenzar a colocar menos aplicaciones en máquinas virtuales más pequeñas, todas escribiendo en el mismo host grande.
‫Entonces podría verse así y podríamos comenzar con Chef o Puppet como una forma de
‫administrar todos estos números crecientes de servidores.
‫De hecho, teníamos tantos servidores a principios de la década de 20 antes de la creación de Dockers que se
‫estaba volviendo muy difícil administrarlos todos a la vez.
‫Usted era un solo administrador, tal vez tratando de administrar docenas, si no cientos de servidores, incluso con la
‫nube ayudándonos a hacer funcionar las máquinas más rápido, derribándolas más rápido.
‫fue mucho
‫Era tanto para manejar que simplemente se convirtió en demasiado para muchos de nosotros.
‫Y creo que la nube lo mejoró, pero también lo empeoró porque hizo que fuera mucho más fácil hacer
‫girar muchos más.
‫Entonces, ¿cómo puede Docker ayudar con eso?
‫¿Cómo puede ayudarnos a reducir la cantidad de infraestructura que administrar y, al mismo tiempo, garantizar el aislamiento de nuestras cargas de trabajo para que
‫las cosas no se vuelvan frágiles o difíciles de administrar?
‫Bueno, si esta fuera nuestra configuración hace 20 años, en lugar de distribuir todas estas máquinas virtuales con cantidades innecesarias
‫de sistemas operativos.
‫Lo que hacen los contenedores es brindarnos el aislamiento como una máquina virtual.
‫No es lo mismo, pero argumentaremos por ahora que es una capa de aislamiento en la que obtienen su propia
‫dirección IP, obtienen su propio sistema de archivos, obtienen su propio espacio de proceso.
‫Y parece casi una máquina virtual completa, pero no necesita todos los diferentes sistemas operativos para que podamos
‫reducir nuestro sistema operativo, contar nuestro número de hosts físicos.
‫Ya no tiene que usar máquinas virtuales como capa de aislamiento, y podría tener este aspecto.
‫En lugar de usar S-H, usaría un Docker.
‫Seelye O si pasa a Kubernetes, podría usar el sello AI de Kubernetes y todas sus aplicaciones
‫están aisladas en sus propios contenedores.
‫Esto le brinda muchos beneficios, incluida la ejecución de múltiples versiones de la misma aplicación en el mismo
‫sistema sin ningún conflicto.
‫A continuación, el problema de los entornos.
‫Y, obviamente, estábamos desarrollando toneladas de sistemas operativos como mencioné, pero la cantidad de diferentes tipos de
‫entornos también estaba aumentando.
‫¿Alguna vez has oído hablar de trabajos en mi máquina?
‫Se hizo famoso como una broma de Jeff Atwood, uno de los fundadores de StackOverflow, y una famosa publicación
‫de blog de hace mucho tiempo.
‫Pero la idea de esto funciona en mi máquina era un poco sarcástica, pero la broma era que a menudo es
‫el trabajo del desarrollador asegurarse de que la aplicación funcione correctamente.
‫Pero no tienen todos los entornos necesarios para que se ejecute esta aplicación.
‫Simplemente lo ejecutan en su máquina, lo prueban en su máquina, y luego, cuando no funciona
‫en otro lugar, dicen, eso funciona en mi máquina.
‫Es realmente desafiante cuando tenemos todos estos sistemas operativos diferentes y Docker acuñó este Matrix from Hell, lo
‫que esencialmente significa que para cada parte de su aplicación, que está por encima de mí,
‫y luego para cada tipo de entorno aquí en este lado, tiene un configuración diferente.
‫Tal vez tengas que instalar las dependencias de una manera diferente.
‫Tal vez las dependencias sean ligeramente diferentes porque una tiene una versión diferente en la otra.
‫Tiene todos estos tipos diferentes de entornos y probablemente haya tenido que leer o escribir documentación sobre cómo la aplicación
‫que usa el desarrollador en Mac debe instalarse de manera diferente en Windows, que debe instalarse de manera
‫diferente en un servidor Linux y en y así sucesivamente.
‫Ahora la imagen del contenedor y el contenedor mismo se convirtieron en un fundamento.
‫Mental, abstracto o un contrato entre el lugar donde se ejecuta y lo que se ejecuta dentro de él, muy parecido a los
‫contenedores físicos en el mundo real que nos permiten enviar mercancías a todo el mundo desde hace
‫casi cien años.
‫El objetivo allí era que las personas que entregaban los contenedores físicos no tenían que saber qué había
‫dentro, y las personas que ponían sus cosas dentro del contenedor no tenían que saber ni preocuparse por cómo llegaba físicamente
‫el contenedor a su destino.
‫Esas fueron una abstracción de proporciones ahora épicas de millones de contenedores que se envían en todo el mundo.
‫Y casi todo en su casa probablemente ha estado en un contenedor durante su vida.
‫Lo mismo ocurre con las imágenes en contenedores Docker ahora.
‫Son un formato estándar consistente conocido ahora como los estándares OCI.
‫Eso garantiza que donde sea que ejecute el contenedor, se ejecutará de la misma manera consistente con las mismas dependencias exactas
‫con las que se creó.
‫A continuación, el problema de la velocidad.
‫Ahora, no me refiero necesariamente aquí a la velocidad de la CPU oa la velocidad de la memoria.
‫Esas cosas naturalmente se vuelven más rápidas con el tiempo.
‫Pero en realidad estoy hablando de la velocidad de los negocios.
‫Y cuando hablamos de yo. t y el software y el ciclo
‫de vida del software, realmente estamos hablando de la capacidad de las empresas y organizaciones para ejecutar sus ideas, para entregar sus ideas
‫de software al cliente lo más rápido posible.
‫Y eso es parte del ciclo de vida del software.
‫Bueno, resulta que la industria ha estado cambiando la infraestructura y la arquitectura desde los albores de
‫la informática.
‫Precisamente por esta razón, hice este pequeño y agradable gráfico porque puedes comenzar desde arriba.
‫Allá por los años noventa, cuando comencé y teníamos mainframes moviéndose a PC en una arquitectura distribuida que
‫se basaba en gran medida en la velocidad de poder implementar el cambio.
‫Ahora podía instalar DOS en una sola máquina sin tener que esperar a que el mainframe se actualizara
‫a la próxima versión de Unix.
‫Ya no podíamos movernos todos a la vez.
‫Necesitábamos que diferentes partes de nuestra organización se movieran en diferentes direcciones a diferentes velocidades, de ahí
‫el nacimiento de la computación distribuida.
‫Luego pasamos de bare metal, lo virtual, porque estábamos cansados de esperar el pedido de hardware y esperar a que se
‫implementara en un centro de datos.
‫Queríamos acelerar las cosas y obtener una mejor utilización de nuestros recursos.
‫La virtualización y las máquinas virtuales se volvieron extremadamente populares por esas razones.
‫Luego, el centro de datos a la nube fue el siguiente paso, porque ahora necesitábamos implementar ideas incluso más rápido de lo que
‫podían permitir nuestro propio hardware y centros de datos.
‫Queríamos ejecutar servidores que actualmente no teníamos en minutos, no en días o semanas, y la nube
‫nos dio acceso a recursos casi instantáneos, lo que obviamente es la razón por la cual la nube es tan grande hoy.
‫Y finalmente, estamos en la siguiente etapa de ese viaje, pasando de la expansión masiva de hosts que teníamos
‫donde teníamos demasiados hosts, kernels y sistemas operativos.
‫Y ahora vamos a poder reducir la cantidad de ellos porque ahora podemos aislar las cargas de trabajo dentro
‫de ellos y ejecutarlos juntos de manera segura en el mismo kernel.
‫Incluyo serverless aquí, por cierto, porque si realmente profundizas en la mayoría de las plataformas serverless, en
‫realidad solo ejecutan contenedores en segundo plano.
‫Puede ser un contenedor que envió como una imagen o simplemente un contenedor en el que ejecutan
‫su función, pero aún se ejecutan en un contenedor.
‫Y por eso me gusta hablar de más rápido, más rápido, más rápido.
‫Esencialmente, lo que Containers y Docker le brindan es la capacidad de desarrollarse más rápido, crear sus aplicaciones
‫más rápido, probarlas más rápido e implementarlas en sus servidores más rápido.
‫Ahora, ¿sigues conmigo?
‫Todavía tengo tu atención.
‫Recapitulemos eso muy rápido.
‫Entonces, la razón por la que existen los contenedores son tres razones principales, en mi opinión, el mejor aislamiento dentro de un solo
‫sistema operativo ahorra tiempo y administración de dependencias y sistemas operativos, pero también nos brinda el aislamiento que necesitamos
‫para proteger nuestras aplicaciones.
‫Entonces hemos reducido las variaciones ambientales.
‫Entonces, la diferencia entre cada entorno que ejecuta es mínima.
‫Nuevamente, generalmente solo la configuración de conexión para las bases de datos, tal vez algunas rutas de URL, cosas así,
‫puertos, y luego el resto es exactamente igual a como lo creó y probó.
‫Y finalmente, aumentar nuestra velocidad de cambio, no solo para el software en sí, sino también para el negocio
‫que quiere implementar ese software.
‫Ahora podemos desarrollar más rápido, construirlo más rápido, implementarlo en servidores más rápido y probarlo más rápido, todo porque estas
‫imágenes de contenedores y los propios contenedores son muy fáciles de construir, implementar y volver a implementar y volver a ejecutar
‫y todo eso.
‫Así que espero que esto tenga sentido.
‫Te veré en el próximo video.