Curso de Docker

Curso de Docker

Guido Vilariño

Guido Vilariño

Virtualización

3/32
Recursos

Aportes 81

Preguntas 18

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

A diferencia de una máquina virtual, que es una abstracción del hardware y emula toda una computadora (o servidor), un contenedor es una abstracción del software y éste puede empaquetar el código, el runtime necesario y las dependencias de una aplicación

Resumen de la clase

Virtualizacion
Permite atacar en simultáneo los tres problemas del desarrollo de software profesional.

Problemas de la virtualizacion

  • PESO: En el orden de los GBs. Repiten archivos en común. Inicio lento.
  • COSTO DE ADMINISTRACION: Necesita mantenimiento igual que cualquier otra computadora.
  • MULTIPLES DE FORMATO: VDI, VMDK, VHD, raw, etc

Containerización
El empleo de contenedores para construir y desplegar software.

  • Flexibles
  • Livianos
  • Portables
  • Bajo acoplamiento
  • Escalables
  • Seguros

Virtualizacion vs Containerización

  • Virtualización: A diferencia de un contenedor, las máquinas virtuales ejecutan un sistema operativo completo, incluido su propio kernel.
  • Containerización: Un contenedor es un silo aislado y ligero para ejecutar una aplicación en el sistema operativo host. Los contenedores se basan en el kernel del sistema operativo host (que puede considerarse la fontanería del sistema operativo), y solo puede contener aplicaciones y algunas API ligeras del sistema operativo y servicios que se ejecutan en modo de usuario.

Contenedores🚢

Un contenedor la unidad logica mas importande de docker que permite encapsular las dependencias de un proyecto en un entorno aislado, con esto puedes conseguir resolver el problema de “But it works in my machine” ya que te permite crear una especie de maquina virtual y pasársela a tus compañeros o colocarlo en un servidor para el despliegue de manera fácil.

¡✋Alerta! Puedes ver a un contendor como una maquina virtual pero eso no significa que lo sea, una maquina virtual puede llegar a se muy similar debido a sus funcionalidades como el aislamiento de procesos.

Entonces… ¿cuál es el beneficio de usar contenedores en lugar de maquinas virtuales?

El mayor beneficio es que los contenedores de Docker están en el nivel de los MB eso nos da ventajas en el consumo de recursos, ya que estos corren compartiendo el host del kernel de Linux, por otro lado las maquinas virtuales son un sistema operativo(O.S) con sus propias apps que corre sobre el tuyo usando virtualizacion y que consume muchos recursos en el nivel de los GB. Una mejor forma de ver esto es observando la arquitectura de los contendores y de las maquinas virtuales

Containers Vs Maquinas virtuales

Los beneficios de usar contenedores incluyen:

  • Ágil creación y despliegue de aplicaciones: Mayor facilidad y eficiencia al crear imágenes de contenedor en vez de máquinas virtuales.
  • Desarrollo, integración y despliegue continuo: Permite que la imagen de contenedor se construya y despliegue de forma frecuente y confiable, facilitando los rollbacks pues la imagen es inmutable.
  • Separación de tareas entre Dev y Ops: Puedes crear imágenes de contenedor al momento de compilar y no al desplegar, desacoplando la aplicación de la infraestructura.
  • Observabilidad: No solamente se presenta la información y métricas del sistema operativo, sino la salud de la aplicación y otras señales.
  • Consistencia entre los entornos de desarrollo, pruebas y producción: La aplicación funciona igual en un laptop y en la nube.
  • Portabilidad entre nubes y distribuciones: Funciona en Ubuntu, RHEL, CoreOS, tu datacenter físico, Google Kubernetes Engine y todo lo demás.
  • Administración centrada en la aplicación: Eleva el nivel de abstracción del sistema operativo y el hardware virtualizado a la aplicación que funciona en un sistema con recursos lógicos.
  • Microservicios distribuidos, elásticos, liberados y débilmente acoplados: Las aplicaciones se separan en piezas pequeñas e independientes que pueden ser desplegadas y administradas de forma dinámica, y no como una aplicación monolítica que opera en una sola máquina de gran capacidad
  • Aislamiento de recursos: Hace el rendimiento de la aplicación más predecible.
  • Utilización de recursos: Permite mayor eficiencia y densidad.

Algo en mi mente hizo PFFFFFF, se destaparon muchas ideas y soluciones Gracias a lo que acabo de escuchar aquí. Verdaderamente que docker es una maravilla, no tenía dudas de esto, pero esta explicación está muy genial. Cultura general para todos este curso.

Otra manera como yo lo explico, es comparar:
🐘 vs 🐀
A ese nivel esta la comparación de VMs vs Docker.

<h1>Virtualization</h1>

Virtualization creates a simulated computing environment, it often includes versions of operating systems, and storage devices.

Virtual Machines

A virtual machine is a computer file or software that is created within a computing environment called the host. It is capable of running applications like a separate computer, creating operating system backups, and more. Some problems with VMs are the administration and maintaining cost, the weight of files, the repetition of a lot of files (Operating System).

Containers

Docker mitigates the previous problems by the usage of containers. Containers refer to lightweight, executable package of a piece of software. It contains all the libraries, configuration files, dependencies, and other parts to operate the application. Docker is no more than a running process, with some added features that keep it isolated from the host and from other containers.

Containers and Virtual Machines

A container shares the kernel of the host machine with other containers. It runs a discrete process, taking no more memory than any other executable. By contrast, a virtual machine runs a full operating system with virtual access to host resources through a hypervisor.

Virtualización

Una máquina virtual nos permite tener varios ordenadores virtuales ejecutándose sobre el mismo ordenador físico.
En Informática, la virtualización es la creación a través de software de una versión virtual de algún recurso tecnológico, como puede ser una plataforma de hardware, un sistema operativo, un dispositivo de almacenamiento o cualquier otro recurso de red.En los ámbitos de habla inglesa, este término se suele conocer por el numerónimo “v12n”.

Dicho de otra manera, se refiere a la abstracción de los recursos de una computadora, llamada Hypervisor o VMM (Virtual Machine Monitor) que crea una capa de abstracción entre el hardware de la máquina física (host) y el sistema operativo de la máquina virtual (virtual machine, guest), dividiéndose el recurso en uno o más entornos de ejecución.

Fuente: Wiki

Ya me hypeo docker xD Se me hace curioso que usa el mismo Kernel del sistema operativo, pero eso me hace pensar que necesito construir la aplicación pensando en el Sistema Operativo destino 🤔

Virtualización.

Es la versión virtual de algún recurso tecnológico ya sea hardware, software, el concepto de una máquina ETC.

Contenedor 🚢📦

A diferencia de la virtualización de una VM las cuál es la versión virtual de una máquina, computador o servidor. Un contenedor solamente virtualiza lo estrictamente necesario para que el código sea ejecutado.

El concepto de contenedores nace de un problema de la industria te transporte de mercancía marítima, en el cual anteriormente era muy difícil transportar mercancía por lo cual se crearon containers los cuales facilitaron el transporte de las artículos de una manera más segura que los métodos empleados en esa época.

al usar containers su principal uso es la construcción y despliegue del software.

Ventajas de los contenedores

  • flexibles: cualquier aplicación que quieras meter en un contenedor se puede meter en un contenedor.
  • livianos: reutilizar kernel para ejecutar el código sin necesidad de tener un sistema operativo completo.
  • portables: se pueden ejecutar en cualquier máquina, tranquilo están diseñados para eso.
  • bajo acoplamiento: tiene todo lo necesario para correr el código que está dentro de sí mismo sin necesidad de afectar a otros contenedores.
  • escalables: se pueden crear varios contenedores sin el temor de que esto afecte el rendimiento o funcionamiento de los mismos.
  • seguros: solo puede acceder a lo necesario para ejecutar el código. Un contenedor no puede acceder a otro contenedor, ni al sistema operativo que lo ejecuta.

Virtualización: es la version virtual de algun recurso. Es lo que permite atacar los tres grandes problemas del SW convencional.

Maquinas virtuales:
1- Problemas:
- Peso: se repitten archivos comunes, inicio lento, orden de los gb.
- Costo de administracion: necesita mantenimiento.
- Multiples formatos: tienen distintas formas de empaquetar el SW.

Estos problemas con Docker, desaparecen porque utiliza contenedores.
¿Qué es un contenedor?
forma estandar

  • Containainerización: empleo de contenedores para construir y desplegar SW.
  • Ventajas:
    • Flexibles: cualquier aplicacion se podra meter en un contenedor.
    • Livianos
    • Portables
    • Bajo acoplamiento: son autocontenidos, tiene todo lo que necesita para correr. No compite con otros contenedores, son independientes.
    • Escalables
    • Seguros

Contenedores vs VMs

  • Contenedores: tiene basicamente el codigo de app y binarios, de pone por debajo docker
  • VMs: ademas de los binarios y codigo, usan el sistema operativo.

La última era de abstracción es Serverless. Sin administrar Servidores, puedes meter tu código en un lado y ese código llama a funciones de otro código para poder funcionar. Al final del mes, solo pagas por cuantas veces tu código ha sido ejecutado. Maravilloso, después de Docker. 💥

haciendi la analogia del puerto para usar docker, se neceita:

  • un puerto estandarizado para embarcar
  • un medio estandarizado para trasportar
  • un puerto estandarizado para desembarcar

y es justo lo que docker hace:

  • construir (embarcar)
  • distribuir (trasportar)
  • ejecutar (desembarcar)

Hola!

Les comparto un buen resumen del tema realizado por joaquinaraujo

https://platzi.com/contributions/guia-del-curso-de-docker/

Saludos

Ya con la explicación de los contenedores y los cargueros queda muy claro el porqué del logo de Docker 😅

  • Virtualización, Son equipos ejecutando dentro de otra.
  • Las Mv, son pesadas, virtualizan toda OS, son de administración costosa, son lentas al momento de inicializarlas, incia todo el OS.
  • Los contenedores son agrupaciones de procesos que se encuentran aislados.
  • Los contenedores son flexibles, livianos, portables, bajo acoplamiento, escalables y seguros.
  • Son versátiles, ya que son ligeras y contienen todas las dependencias para su ejecución, garantizando su ejecución en todos lados.

Con Docker se puede crear una red, la cual permitirá la comunicación entre dos contenedores para un objetivo en común. Logre hacer esto para crear un contenedor Jenkins y SonarQube y implemente esta red para la comunicación entre sí y su versatilidad, agilidad y rápida ejecución me permite trabajar de una manera mas segura y confiable.

Esta clase no te imaginas la falta que me hacía para terminar de entender la justificación de dockerización sobre virtualización

Qué es Docker? Docker Permite resolver problemas de construir, distribuir y ejecutar software en diferentes plataformas.

Containarization: un estándar para llevar algo dentro. Agrupadores de procesos.

Versátiles:
En el orden de los MB
Tienen todas las dependencias que necesitan para funcionar correctamente.
Funcionan igual en todos lados.

Eficientes:
Comparten archivos simultáneos con otros contenedores.
Solo se ejecutan procesos, no un SS.OO completo.

Aislados:
Lo que pasa en el container queda en el container.
No pueden alterar su entorno de ejecución (a menos que explícitamente se indique lo contrario)
Virtualization: es una imagen o archivo que contiene información dentro. Por lo general son pesadas de administración costosa y son lentas.

Pesadas:
En el orden de los GB
Muchas VMs en el mismo host suelen repetirse en lo que contienen
Administración costosa:
Una VM tiene que ser administrada como cualquier otra computadora: patching, update, etc
Hay que administrar la seguridad interna entre apps

Lentas:
Correr nuestro código en una VM implica no solo arrancar aplicaciones, sino también esperar el boot de la VM en sí.

Contenedores
Un contenedor es un silo aislado y ligero para ejecutar una aplicación en el sistema operativo host. Los contenedores se basan en el kernel del sistema operativo host (que puede considerarse la fontanería del sistema operativo), y solo puede contener aplicaciones y algunas API ligeras del sistema operativo y servicios que se ejecutan en modo de usuario.
Virtualización
A diferencia de un contenedor, las máquinas virtuales ejecutan un sistema operativo completo, incluido su propio kernel.

Cambiaria el nombre de “peso” en los problemas de las VMs por recursos, ya que mas allá de las gb esto también involucra procesamiento y ram, por ejemplo.

Es la versión virtual de algún recurso tecnológico como algún hardware, sistema operativo, un dispositivo de almacenamiento o recurso de red.

Máquinas Virtuales

El objetivo de las máquinas virtuales es construir con algún tipo de software una versión virtual de una máquina. Un ejemplo es WSL2, el emulador de Microsoft para correr linux dentro de Windows.

Problemas de las Virtual Machines

  1. Peso.

    • En el orden de los GBs.
    • Repiten archivos en común.
    • Inicio lento.
  2. Costo de administración.

    • Necesita un mantenimiento igual que cualquier otra computadora.
  3. Múltiples formatos

    • VDI, VMDK, VHD, raw, y muchos mas;

Todos estos problemas son solucionados prácticamente desaparecen. Utilizando una solucion alternativa a las máquinas virtuales.

Docker y los Contenedores

Desarmar, almacenar, y reconstruir artefactos. Este es el problema del desarrollo de software, todo era muy ineficiente y riesgoso.

Esto es la estandarización y eso propone Docker, emplear contenedores para construir y desplegar software. El objetivo es para cientos de miles de posibles tipos de software solo haya una sola solución.

Ventajas.

  • Flexibles. Toda aplicación se puede meter en un contenedor.
  • Livianos. Los contenedores comparten y reutilizan código que ya esta en el Kernell(código base) del sistema operativo.
  • Portables. Están diseñados para correr igual en cualquier máquina.
  • Bajo acoplamiento. Son autocontenidos, tienen todo lo que necesitan y no les afecta que otros paquetes existan en el sistema operativo ni en otros contenedores.
  • Escalables. Es muy fácil tomar un mismo código para utilizarlo en otra máquina.
  • Seguros. Un contenedor solo puede acceder las cosas que necesita del sistema operativo, no puede acceder ni a otros contenedores ni a archivos de la máquina.

Conclusión

Para concluir puedes ver como docker a diferencia de las máquinas virtuales, solo almacena los archivos y binarios necesarios en nuestra aplicación, mientras que las Virtual Machines almacenan también archivos del sistema operativo.

Una analogia que me gusto es diferenciar entre un elefante y un ratón, así es Docker.

Virtualización

  • Problemas: peso/tamaño, costo de administración, múltiples formatos (VDI, VMDK, VHD)

Contenedores

  • Contenerización: Empleo de contenedores para construir y desplegar software
  • Ventajas: flexibles, livianos, portables, bajo acoplamiento, escalables, seguros

¿cuál es el principal problema que intenta resolver la virtualización?
Atacar en simultaneo los tres grandes problemas de la ingeniería del software.

Los contenedores son la estandarización para construir y desplegar software.

Algunas de las ventajas de Docker son:

  • Flexibles
  • Livianos
  • Portables
  • Bajo acoplamiento
  • Escalables
  • Seguros

Llegué a este curso por que necesito aprender sobre Docker y el curso que me pusieron en el trabajo esta super feo; confío totalmente en Platzi y este curso se ve super prometedor 💕

Estoy emocionada ❤️

  1. Virtualización

Definición Virtualización
En Informática, la virtualización es la representación a través de software algún recurso tecnológico, esto recursos tecnológicos pueden ser: hardware, sistemas operativos, dispositivos de almacenamiento o recursos de la red.
la virtualización permite atacar en simultáneo los problemas que se presentan en la etapa del desarrollo de software, es decir: en la Construcción, distribución y Ejecución

Referencia:
https://es.wikipedia.org/wiki/Virtualización
https://platzi.com/clases/2066-docker/32843-virtualizacion/ minuto 0:25 segundos

Características de la virtualización, problemas

  • PESO: Cuando virtualizamos fuera de docker normalmente: el peso está en el orden de los GBs. También se repiten archivos en común. Otro problema es que el es Inicio lento.

  • COSTO DE ADMINISTRACIÓN: Necesita mantenimiento igual que cualquier otra computadora.

  • MÚLTIPLES DE FORMATO, cada solución tecnológica relacionada con la virtualización tiene su propio formato y no es compatible entre sí por lo general algunos de estos formatos son VDI, VMDK, VHD, raw, etc

Definición Container Docker, solución
Un contenedor es una unidad estándar de software que empaqueta el código y todas sus dependencias para que la aplicación se ejecute de forma rápida y confiable de un entorno informático a otro. Una imagen de contenedor de Docker es un paquete de software ligero, independiente y ejecutable que incluye todo lo necesario para ejecutar una aplicación: código, herramientas del sistema, bibliotecas del sistema y configuraciones

Referencia: https://www.docker.com/resources/what-container

Características de los Containers de docker, solución
El empleo de contenedores para construir y desplegar software.

  • Flexibles, la mayoría de las aplicaciones pueden estar dentro de un contenedor.
  • Livianos, reutilizan el kernel de la máquina anfitriona y por este motivo reutilizan código.
  • Portables, está diseñados para funcionar de la misma manera en cualquier máquina.
  • Bajo acoplamiento, un contenedor tiene todo lo que necesita para funcionar
  • Escalables, es más cómodo crear varias instancias de nuestros contenedores. para colocarlos en múltiples servidores cdn.
  • Seguros, se asegura que las aplicaciones dentro de los contenedores puedan acceder a los recursos disponibles dentro de los contenedores.

Entonces Containerización, Es el empleo de contenedores para construir y desplegar software. Cuando utilizamos contenedores los que hacemos es reutilizar el kernel de la máquina que hospeda nuestros contenedores, eso quiere decir que va a reutilizar varios códigos

Contenedores vs. VMs

  • El Contenedor contiene: código de la aplicación, binarios y librerías
  • La Virtualización contiene: código de la aplicación, binarios y librerías y el sistema operativo

real que una GRAN ventaja de platzi sobre otras plataformas es la comunidad que comparte conocimiento en los comentarios. rifados!

Contenerización es un paradigma diferente a virtualización. Y ambos atacan problemas similares.

Ahora entiendo por qué es tan importante saber de Docker!

Virtualización: Versión virtual de algún recurso tecnológico
- Permite atacar en simultaneo los tres problemas del desarrollo de software profesional

Problemas de las VMs
1. Peso (GB): Repiten archivos en común
2. Rapidez: Primero tiene que arrancar la maquina y después ejecuta
3. Costo de adm.
4. Múltiples formatos: VDI, VMDK, raw, …

Containerización: El empleo de contenedores para construir y desplegar software
- Flexibles
- Livianos
- Portables
- Bajo acoplamiento
- Escalables
Seguros

Hola comunidad 😄, según como yo lo veo, mientras las maquinas virtuales (VM) son una abstracción de todo el hardware de una computadora (por ello pesa más), un contenedor es la abstracción del sistema operativo (OS) osea en su defecto es una forma de abstraer el software.

  • Si alguien tiene más conocimiento del tema me gustaría saber si mi analogía es en mayor medida correcta.

¿Cuál es mejor?

La respuesta es que no hay tal cosa como mejor o peor, son herramientas y como tal son más eficientes para ciertos trabajos dependiendo de lo que necesitemos hacer.

la virtualizacion ayuda a resolver los 3 problemas de la ing de software pero tambien tiene problemas ahi entra docker con dar una mejor solucion usando contenedores

Mucho mas Factibles y el acoplamiento y su start es genial que todo se contenga en una sola carpeta…

Los contenedores son como pequeñas burbujas donde podemos instalar todas aquellas dependencias de nuestra aplicación sin importar la infraestructura que haya debajo.

resumen:
la propuesta de docker es poder mejorar las maquinas virtuales

la propuesta es con un software crear una maquina

y su propuesta de valor es mejorarlo a partir de contenedores

Docker es muy interesante, lo difícil para mí es definir bien lo que necesita el contenedor para poder trabajar, es decir puertos, variables de entorno, conexiones con otros contenedores, memoria persistente y definir rutas del código fuente.

Espero lograr todo eso en este curso.

Virtualización definición: Versión virtual de algún recurso tecnológico, como hardware, un sistema operativo, un dispositivo de almacenamiento o un recurso de red.

La virtualización permite atacar en simultaneo los tres problemas del desarrollo de software. (Puede hacerse mejor)

Problemas de las VMs:

  • Peso: En el orden de los GBs. Repiten archivos en común. Inicio lento
  • Costo de administración: Necesita mantenimiento igual que cualquier otra computadora
  • Múltiples de formatos: VDI, VMDK, VHD, raw, etc.

Docker usa Contenedores, soluciona este problema para las personas.

Los contenedores nacen cuando se transportaban mercancías, los desembarques de mercancía no eran estandarizados.

En software containerización es: el empleo de contenedores para construir y desplegar software.

Ventajas:

  • Flexibles
  • Livianos (Reutilizan el kernel entre todos, el código del sistema operativo)
  • Portables
  • Bajo Acoplamiento (Tienen todo para funcionar independientemente)
  • Escalables (Es muy fácil crear muchos contenedores iguales para escalar una solución)
  • Seguros (sólo accede a las partes del sistema que necesita acceder)

🤖 Virtualización

Ideas/conceptos claves

Virtualización

Es la versión virtual de algún recurso tecnológico, como (…) hardware, un sistema operativo, un dispositivo de almacenamiento o (…) recurso de red.

Máquina virtual

Es un software que simula un sistema de computación y puede ejecutar programas como si fuese una computadora real.

Containerización

Es el empleo de contenedores para construir y desplegar software.

Apuntes

  • Virtualizar permite atacar en simultáneo los tres problemas del desarrollo de software profesional
  • Si bien una buena aproximación fue las máquinas virtuales, tienen varios problemas

Problemas de las VMs

  • Peso
    • En el orden de los GBs
    • Repiten archivos en común
    • Inicio lento
  • Costo de administración
    • Necesita mantenimiento igual que cualquier otra computadora (actualizaciones, instalaciones, etc.)
  • Múltiples formatos
    • VDI, VMDK, VHD, raw, etc.

Contenedores

  • Docker implementa contenedores
  • Se puede entender los contenedores como la analogía del transporte de hace muchos años
    • Transportar algo grande como un tren era dificultoso porque al llenar a un barco, dicho tren se debía desarmar para que entre en el barco. Siempre está la posibilidad de dañar el producto, ya que al manipular el mismo se podía romper.
    • En la actualidad se utiliza contenedores, existen barcos y puertos que están diseñados y siguieron el estándar de implementar contenedores.

Ventajas

  • Flexibles

    No importa que aplicación desees meter en un contenedor, básicamente cualquier tipo de aplicación tiene la capacidad de ingresar en un contenedor.

  • Livianos

    Los contenedores reutilizan el kernel (La parte más profunda del sistema operativo) de la máquina anfitriona (La máquina donde corre el contenedor) entre todos.

  • Portables

    Están diseñados para correr de la misma manera en cualquier máquina. Construirlos localmente y ejecutarlos en un servidor no hay ningún problema.

  • Bajo acoplamiento

    Los contenedores son autocontenidos, es decir, que tiene todo lo necesario para correr lo que contiene y no importa otra cosa que haya afuera en el sistema operativo o en otros contenedores.

  • Escalables

    Es muy fácil crear uno o muchos contenedores a partir de uno. Con la garantía que el código va a ser igual.

  • Seguros

    Las herramientas que utilizan, se aseguran de que lo que necesita un contenedor solamente pueda acceder a lo que realmente necesita y que no pueda acceder a otras características.

📌 **RESUMEN:** Una aproximación a la virtualización fue las máquinas virtuales, pero Los contenedores resultan ser más flexibles, livianos porque reutilizan partes del kernel de la máquina anfitriona, a diferencia de las máquinas virtuales, son portables, tiene bajo acoplamiento es decir que tienen todo lo necesario para correr, son escalables y son seguros.

ventajas de los contenedores

Me gusta como el profesor explica este curso, va paso a paso y lenguaje sencillo

Excelente

entendido a la perfeccion

Una joya de solución!

Excelente explicación estoy emocionado por docker

Diferencia entre Container y VM

Con razón se habla tanto de Docker en el mundo del desarrollos… Genial

Contenerización: Construir y desplegar software:

Flexibles
Livianos
Portables: corren en cualquier máquina
bajo acoplamiento: no compiten entre sí, no se afectan
escalables: ancho de banda, cuesta poco y es fácil
Seguros: herramientas que corren contenedores se asegura que solo accedan al contenedor, no a otros lados de la pc

gracias por el aporte

Hola a [email protected], veo que los comentarios del curso son promedio de un año.

Me estoy imaginando lo aliviados que se sintieron los desarrolladores cuando salio a la luz Docker, excelente clase.

Que iluminadora esta clase.

contenedores son flexibles, livianos, portables, bajo acoplamiento, escalables y seguros.

La virtualización es un concepto que hace referencia a virtualizar el hardware con software (La capacidad y sus características). Esto trae consigo 3 problemas principales: Peso, costo, multiples formatos. Estos problemas los resuelve Docker.

Containerization.

El empleo de contenedores para construir y desplegar software.
Pros

  • Flexibles
  • Livianos
  • Portables
  • Escalables
  • Bajo acoplamiento
  • Seguros

Con software construir un equipo con las características que necesitamos

containerización el empleo de contenedores para contruir y desplegar software

Muy buena clase

Máquina virtual
Lentas
Hay que darles mantenimiento
Pesadas
Pesimas si necesitas varias
Contenedores
Flexibles
Livianos
Portables
Bajo acoplamiento
Escalables
Seguros

La virtualización es la forma que tiene la industria del software de solucionar de alguna manera los problemas que mencionamos en la clase anterior.

La virtualización es básicamente la versión virtual de algún recurso tecnológico, como hardware, un sistema operativo, un dispositivo de almacenamiento o recurso de red; en resumen, nos permite atacar en simultáneo los tres grandes problemas del desarrollo del software profesional.

Es válido recalcar que antes de Docker ya habían soluciones de virtualización (máquinas virtuales) con las cuales trabajar, pero algo muy importante de resaltar es que se podía hacer mucho mejor, y es justamente eso lo que viene a proponer Docker.

La propuesta de una máquina virtual es construir con algún software una versión virtual de una máquina física. Sin embargo, este enfoque tiene varios problemas, y entre los más resaltados están:

  • Peso: En el orden de los GBs. Repiten archivos en común (la máquina host y la máquina virtual; pueden haber varias máquinas virtuales con el mismo contenido), y tiene un inicio lento.
  • Costo de administración: Necesita mantenimiento al igual que cualquier otra computadora.
  • Múltiples formatos: VDI, VMDK, VHD, raw, etc.

Todos estos problemas que ocurren al trabajar con máquinas virtuales desaparecen con Docker, porque Docker usa una solución alternativa a la máquina virtual; Docker usa contenedores.

Esta es la propuesta de los contenedores. Cuando hablamos de contenerización de software, de lo que estamos hablando es el empleo de contenedores para construir y desplegar software. Aunque no son contenedores de mercancía marítimos, el concepto es el mismo: cómo hacemos para que en lugar de que haya miles de maneras distintas de transportar y construir software, haya una sola; este es el objetivo de los contenedores.

Y no sólo tiene el objetivo mencionado anteriormente, sino que también tiene ventajas:

  • Flexibles: Sea cual sea la aplicación que estemos desarrollando, podremos implementarla dentro de un contenedor. Toda aplicación se puede desplegar en un contenedor.
  • Livianos: Los contenedores reutilizan el kernel (la parte más profunda del sistema operativo de la máquina anfitriona) entre todos. Todos los contenedores que estén corriendo en una máquina van a reutilizar un montón de código que ya está disponible en el sistema operativo. Sólo tendríamos que empaquetar nuestro código dentro del contenedor y no todo el sistema operativo necesario para correrlo.
  • Portables: Están diseñados para correr de la misma manera en cualquier máquina. Construir el software en nuestra máquina local y ejecutarlo en el servidor ya no es un problema; están diseñados para eso.
  • Bajo acoplamiento: Son auto-contenidos; es decir, tiene todo lo que necesita para poder correr el software que está dentro.
  • Escalables: Es muy fácil y rápido crear diversos o muchos contenedores iguales, con la garantía de que va a tener el mismo comportamiento que el contenedor base.
  • Seguros: La herramientas que corren contenedores (como Docker) se aseguran de que un contenedor solamente pueda acceder a aquellas partes del sistema que necesita acceder y que no acceda a partes innecesarias.
    En pocas palabras, no soluciona una infinidad de problemas, aquellos problemas que están desde el principio sigo XX en el comercio internacional.

Esquema de contenedores y esquema de máquinas virtuales:

  • Un contenedor tiene básicamente el código de la aplicación, los binarios o librerías que necesita ese código para ejecutarse, y nada más. La propuesta de Docker es ponerse por debajo de eso y ejecutar contenedores, quedándose encima del sistema operativo anfitrión y de la infraestructura.
  • En el esquema de máquinas virtuales, también van a tener el código de la aplicación, sus binarios y librerías; pero además va a tener un sistema operativo simulado o huésped.
    Si corriéramos tres aplicaciones similares con máquinas virtuales en un ordenador que usen el mismo sistema operativo, mismos binarios y librerías, van a estar replicados tres veces; en cambio, en el esquema de Docker, no sólo no vamos a necesitar incluir el sistema operativo huésped, sino que (si están bien diseñados los contenedores) ni siquiera se replicaran las librerías y binarios.

En conclusión, la solución de contenedores es una solución más prometedora, más simple y más eficiente que la de las máquinas virtuales.

Virtualización

Con muchas expectativas para este tema de docker, ojala sea bastante practico, orientado a lo usado hoy en día…

Al estandarizar el codigo y usar recursos del kernel elimina muchas de las debilidades de las VM

Inicio de la explicación de contenedores.

Ya empiezo a entender las ventajas de docker, las maquinas virtuales tienden a ser mas lentas por el exceso de capas que existen para ejecutar un comando

Ey tú, lee esto 😃
Los contenedores son los cracks por que son :

  • Flexibles

  • Livianos

  • Portables

  • Bajo acoplamiento

  • Escalables

  • Seguros

Un contenedor contiene por transitividad una Máquina virtual y obviamente la mejora en cuanto a rendimiento y necesidad, pero una Máquina virtual no necesariamente es un contenedor. Es decir, no es relación bidireccional, por lo cual es mucho mejor un contenedor.

MY NOTES FOR VIRTUALIZATION

Es la forma que tiene la industria del software de alguna los problemas que se hablaron en la clase anterior

“versión virtual de algún recurso tecnológico, como hardware, un sistema operativo, un dispositivo de almacenamiento o recurso de red”

Permite atacar en simultaneo los tres problemas del desarrollo de software profesional.

Problemas de las VMs

  • Peso

En el orden de los GBs. Repiten archivos en común. Inicio lento

  • Costo de administración

Necesita mantenimiento igual que cualquier otra computadora

  • Múltiples formatos

VDI, VMDK, VHD, raw, etc.

Estos multiples problemas que tienen las maquinas virtuales con docker desaparece, porque docker utiliza una solución alternativa a la maquina virtual.

Contedores

Docker utiliza contenedores

analogia:

Un viaje al siglo 19, pensemos en el comercio internacional, explosión de la revolucion industrial mundo estaba construyendo maquinas y herramientas en una parte del mundo y habia que enviarlas a otra parte del mundo, el mecanismo era barco y después talvez por tren

El problema que podemos ver en la imagen es que podemos ver la escena de un puerto donde hay gente que esta desembarcando mercancías con una tela grande para poder adaptarse a la forma que tiene esa mercadería

Que lo que esta cargado no es igual talvez a lo que ya este en el piso y estamos bajando con una grúa las cosas poniéndolas en el piso para después descargarlas que es lo que finalmente va a llegar al destino o talvez hacia otro deposito

Entonces imaginamos que tenemos que transportar una nueva locomotora desde la fabrica que esta en europa hasta las vias de un ferrocarril que esta en america, la fabrica construye la locomotora y la lleva hasta el puerto por tren y podemos cargar entera una locomotora y talves no necesitemos la locomotora entera si no que la desarmamos

Entonces resulta que tienen forma distinta entonces tenemos que desarmarla para poderla transportar, cuando llegamos al puerto destino en america la grua que tenemos sirva pra bajar esas cosas tan pesadas???

Tendremos que hacer otra cosa para poder sacar estas piezas tan pesadas usando el ingenio y puede que llevemos mas de una locomotora que llevemos piezas mas pesadas a tres puertos distintos y en algunos puertos es mas fácil en otros es mas difícil

Entonces ahi es donde llega todo el problema y ese que todo sea ineficiente porque si varian los productos que llevamos la manera en que debe ser el proceso de llevar cada cosa y descargarla va a ser mas complicado siendo esto variable siempre.

La solucion a esta problematica es el uso de contenedores, siendo piezas iguales nos facilita el manejo de lo que lleve por dentro aunque pese mas la maquina que hace el proceso de transporte y descarga lo soportara, entonces aun asi sus valores sean diferentes no habria inconvenientes.

Containerizacion

El empleo de los contenedores para construir y desplegar software

El objetivo de los contenedores que en ves de haya una sola forma de transportar las cosas, se emplea una sola ese es el objetivo de los contenedores.

Contenedores

  • Flexibles

No importa que aplicación quieras poner en un contenedor vas a poder hacerlo

  • Livianos

Porque los contenedores lo que hacen es reutilizar el carnel (la parte mas profunda del SO de la maquina anfitriona es decir donde corren los contenedores entre todos) entonces todos los contenedores que tengamos en una maquina van a reutilizar un monton de codigo que ya esta disponible en el SO

Yo solo tengo que empaquetar mi código y no solo el sistema operativo necesario para correr todo

  • Portables

Quiere decir que están diseñados para correr de la misma manera en cualquier maquina

  • Bajo acoplamiento

Los contenedores son autocontenidos, un contenedor tiene todo lo que necesita para poder correr el software que esta adentro suyo y no le importa las cosas que haya en el SO o en otros contenedores no van a competir entre si

Y lo que haya dentro de un contenedor no va a afectar de ninguna manera a los demás

  • Escalables

Es muy fácil agarrar un contenedor y si necesito adquirir mas ancho de banda en mi aplicación o salir de mas clientes es muy facil crear un contenedor igual o muchos contenedores iguales con la garantia de que el codigo va a ser igual, que va a funcionar igual que no va a ver ningún tipo de discrepancia y cuesta muy poco hacerlo es muy facil y rapido

  • Seguros

Porque las herramientas que corren contenedores se aseguran que un contenedor pueda acceder a aquellas partes del sistema que necesita acceder y que no pueda acceder a otras, otros contenedores o a la maquina anfitriona

Muy interesante esta solución, la verdad al momento me encuentro conociendo la herramienta y suena bien.

Contenedores.

  • Flexibles

  • Livianos

  • Portables

  • Bajo acoplamiento

  • Escalables

  • Seguros

Problemas de las Maquinas Virtuales

  • Peso
    En el orden de los GBs Repiten archivos en común. Inicio lento
    **
  • Costo de administración**
    Necesita mantenimiento igual que cualquier otra computadora
    **
  • Multiples de formatos**
    VDI, VMDK, VHD, raw, etc

Virtualización

… Versión virtual de algún recurso tecnológico, como (…) hardware, un sistema operativo, un dispotivo de almacenamiento o (…) recurso de red.

Nos permite atacar en simultáneo los tres problemas del desarrollo de software profesional.

  • Desarrollo

  • Distribución

  • Ejecución

También se puede ver a la Contenerización cómo virtualización de procesos, donde se puede contrastar el menor peso que tienen comparado con la virtualización de máquinas virtuales.

Hasta ahora he podido entender bien la definicion de contenedor y el porqué es mejor usar estos en lugar de las VM.
Muchas gracias

Una maquina virtual requiere muchisimos mas recursos y por lo general no ofrecen una excelente experiencia, llegando a entorpeccer el proceso de desarrollo. En cambio un contenedor de Docker es unicamente es eso, un pequeño contenedor que a diferencia de la MV este aprovecha el nuclero (kernel) de tu sistema operativo para ejecutar y montar ahi el contenedor.

Si están bien diseñados 😃