Header Ads Widget

¿Qué es Docker y por qué es tan popular?



Si ha estado cerca de la industria de TI en los últimos cinco años, es muy probable que haya oído hablar de la plataforma de contenedores Docker. Docker y los contenedores son una nueva forma de ejecutar software que está revolucionando el desarrollo y la entrega de software.

¿Qué es Docker?

Docker es una nueva tecnología que permite a los equipos de desarrollo crear, administrar y proteger aplicaciones en cualquier lugar.
No es posible explicar qué es Docker sin explicar qué son los contenedores, así que echemos un vistazo a una explicación rápida de los contenedores y cómo funcionan.
Un contenedor es un tipo especial de proceso que está aislado de otros procesos. A los contenedores se les asignan recursos a los que ningún otro proceso puede acceder y no pueden acceder a ningún recurso que no se les haya asignado explícitamente.
¿Así que cuál es el problema?
Los procesos que no están "en contenedores" pueden solicitarle al sistema operativo el acceso a cualquier archivo en el disco o cualquier socket de la red.
Hasta que los contenedores estuvieron ampliamente disponibles, no había una manera confiable y garantizada de aislar un proceso a su propio conjunto de recursos. Un contenedor que funcione correctamente no tiene absolutamente ninguna manera de llegar fuera de su "caja de arena" de recursos para tocar recursos que no se le asignaron explícitamente.
Por ejemplo, dos contenedores que se ejecutan en la misma computadora también pueden estar en dos computadoras completamente diferentes, a millas de distancia entre sí. Están total y efectivamente aislados unos de otros.
Este aislamiento tiene varias ventajas:
  • Dos procesos en contenedor pueden ejecutarse en paralelo en la misma computadora, pero no pueden interferir entre sí.
  • No pueden acceder a los datos del otro a menos que estén configurados explícitamente para hacerlo.
  • Dos aplicaciones diferentes pueden ejecutar contenedores en el mismo hardware con la confianza de que sus procesos y datos están seguros.
  • El hardware compartido significa menos hardware. Se acabaron los días en que una empresa necesita miles de servidores para ejecutar aplicaciones. Ese hardware puede ser compartido entre diferentes unidades de negocios o clientes empresariales completamente diferentes. El resultado son nuevas economías de escala masivas para centros privados y públicos por igual.

Docker explicó

Ahora que sabes qué son los contenedores, vamos a Docker.
Docker es tanto una empresa como un producto. Docker Inc. hace Docker, el kit de herramientas de contenedores.
Los contenedores no son una tecnología singular. Son una colección de tecnologías que se han desarrollado durante más de diez años. Las características de Linux (como espacios de nombres y cgroups) han estado disponibles durante bastante tiempo, desde aproximadamente 2008.
¿Por qué, entonces los contenedores no han sido utilizados todo ese tiempo?
La respuesta es que muy poca gente sabía cómo hacer ellos. Solo el mago guerrero del desarrollador de sistemas Linux de nivel 20 más poderoso comprendió todas las diversas tecnologías necesarias para crear un contenedor.
En aquellos primeros días, querer hacer el trabajo para comprenderlos, y mucho menos crear contenedores, era una tarea compleja. Los riesgos son altos: hacerlo mal convierte los beneficios de los contenedores en pasivos.
Si los contenedores no contienen, pueden convertirse en la causa raíz del último título de violación de seguridad de Hacker News.
Las masas necesitaban una creación de contenedores consistente y confiable antes de que los contenedores pudieran pasar a la corriente principal.
Entra Docker Inc.
Las características principales de Docker son:
  • La interfaz de línea de comandos de Docker (CLI)
  • El motor Docker
Docker hizo que sea más fácil crear contenedores al "envolver" la complejidad de las llamadas al sistema operativo subyacentes necesarias para que funcionen. La popularidad de Docker se multiplicó, por decirlo suavemente.
En marzo de 2013, el creador de Docker, dotCloud, se cambió de nombre a Docker Inc. y Docker de código abierto. En solo unos pocos años, los contenedores han hecho un viaje desde la relativa oscuridad hasta la transformación de una industria. El impacto de Docker rivaliza con la introducción de las máquinas virtuales a principios de la década de 2000.
Aquí hay un gráfico de búsquedas de Google Trends para el término "docker" en los últimos cinco años:
Google Trend Docker
Puede ver que las búsquedas en Google de Docker han experimentado un crecimiento constante y sostenible desde su introducción en 2013. Docker se ha establecido como el estándar de facto para la contenedorización. Hay algunos productos de la competencia, como CoreOS / rkt , pero están bastante por detrás de Docker en popularidad y conocimiento del mercado.
La popularidad de Docker aumentó recientemente cuando Microsoft anunció su soporte tanto en Windows 10 como en Windows Server 2016.
Docker es popular debido a las posibilidades que abre para la entrega y el despliegue de software. Muchos problemas e ineficiencias comunes se resuelven con los contenedores.
Las seis razones principales de la popularidad de Docker son:

1. Facilidad de uso

Una gran parte de la popularidad de Docker es su facilidad de uso. Docker se puede aprender rápidamente, principalmente debido a los muchos recursos disponibles para aprender a crear y administrar contenedores. Docker es de código abierto, por lo que todo lo que necesita para comenzar es una computadora con un sistema operativo que admita Virtualbox, Docker para Mac / Windows o que admita contenedores de forma nativa, como Linux.

2. Escalamiento más rápido de los sistemas.

Los contenedores permiten mucho más trabajo con mucho menos hardware informático. En los primeros días de Internet, la única forma de escalar un sitio web era comprar o arrendar más servidores. El costo de popularidad estaba ligado, linealmente, al costo de la ampliación de escala. Los sitios populares se convirtieron en víctimas de su propio éxito, pagando miles de dólares por nuevo hardware. Los contenedores permiten a los operadores de centros de datos acumular muchas más cargas de trabajo en menos hardware. Hardware compartido significa menores costos. Los operadores pueden depositar esas ganancias o transferir los ahorros a sus clientes.

3. Mejor entrega de software

La entrega de software utilizando contenedores también puede ser más eficiente. Los contenedores son transportables . También son completamente autónomos. Los contenedores incluyen un volumen de disco aislado. Ese volumen va con el contenedor a medida que se desarrolla y se implementa en varios entornos. Las dependencias de software (bibliotecas, tiempos de ejecución, etc.) se envían con el contenedor. Si un contenedor funciona en su máquina, se ejecutará de la misma manera en un entorno de Desarrollo, Preparación y Producción. Los contenedores pueden eliminar los problemas de variación de configuración comunes al implementar archivos binarios o código en bruto.

4. Flexibilidad

El funcionamiento de las aplicaciones en contenedor es más flexible y resistente que el de las aplicaciones sin contenedor. Los orquestadores de contenedores manejan la ejecución y el monitoreo de cientos o miles de contenedores.
Los orquestadores de contenedores son herramientas muy poderosas para administrar grandes implementaciones y sistemas complejos. Quizás la única cosa más popular que Docker en este momento es Kubernetes , actualmente el orquestador de contenedores más popular.

5. Redes definidas por software

Docker soporta redes definidas por software. El Docker CLI y el motor permiten a los operadores definir redes aisladas para contenedores, sin tener que tocar un solo enrutador. Los desarrolladores y operadores pueden diseñar sistemas con topologías de red complejas y definir las redes en archivos de configuración. Este es un beneficio de seguridad, también. Los contenedores de una aplicación pueden ejecutarse en una red virtual aislada, con rutas de ingreso y egreso estrechamente controladas.

6. El auge de la arquitectura de microservicios.

El auge de los microservicios también ha contribuido a la popularidad de Docker. Los microservicios son funciones simples, generalmente accesibles a través de HTTP / HTTPS, que hacen una cosa y lo hacen bien.
Los sistemas de software normalmente comienzan como "monolitos", en los que un único binario admite muchas funciones diferentes del sistema. A medida que crecen, los monolitos pueden ser difíciles de mantener y desplegar. Los microservicios dividen un sistema en funciones más simples que se pueden implementar de forma independiente. Los contenedores son excelentes anfitriones para microservicios. Son autónomos, fáciles de implementar y eficientes.

¿Deberías usar Docker?

Una pregunta como esta casi siempre se responde mejor con precaución y prudencia. Ninguna tecnología es una panacea. Cada tecnología tiene inconvenientes, compensaciones y advertencias.
Habiendo dicho todo eso ...
Sí, usa Docker.
Estoy haciendo algunas suposiciones con esta respuesta:
  1. Que desarrolle software distribuido con la intención de exprimir cada último ciclo de potencia de procesamiento y byte de RAM de su infraestructura.
  2. Está diseñando su software para altas cargas y rendimiento, incluso si todavía no tiene altas cargas o necesita el mejor rendimiento.
  3. Desea lograr una alta velocidad de despliegue y obtener los beneficios de la misma. Si aspira a las prácticas de DevOps en la entrega de software, los contenedores son una herramienta clave en esa caja de herramientas.
  4. O quieres los beneficios de los contenedores, los necesitas, o ambos. Si ya ejecuta aplicaciones de gran carga, distribuidas, monolíticas o de microservicio, necesita contenedores. Si aspira a ejecutar algún día estas aplicaciones de alta carga y alto rendimiento, ahora es el momento de comenzar con los contenedores.

Cuando no debes usar Docker o contenedores.

El desarrollo, la implementación y el funcionamiento del software en contenedores es muy diferente del desarrollo y la entrega tradicionales. No es sin pruebas y tribulaciones.
Hay concesiones a considerar:

Si tu equipo necesita entrenamiento significativo.

El conjunto de habilidades existentes de su equipo es una consideración importante. Si no tiene el tiempo o los recursos para tomar los contenedores lentamente o para contratar a un socio de consultoría que lo ayude a aumentar su capacidad, debe esperar. El desarrollo y las operaciones de los contenedores no es algo que usted quiera "descubrir a medida que avanza", a menos que se mueva muy lenta y deliberadamente.

Cuando tienes un perfil de alto riesgo.

Su perfil de riesgo es otra consideración importante. Si se encuentra en una industria regulada, o está ejecutando cargas de trabajo generadoras de ingresos, tenga cuidado con los contenedores. La operación de contenedores a escala con orquestadores de contenedores es muy diferente a la de los sistemas sin contenedores. Los beneficios de los contenedores vienen con una complejidad adicional en los sistemas que los entregan, operan y monitorean.

Si no puedes contratar el talento.

A pesar de su popularidad, Docker es una forma muy nueva de desarrollar y entregar software. El ecosistema está cambiando constantemente, y la población de ingenieros que son expertos en él todavía es relativamente pequeña. Durante esta etapa temprana, muchas compañías están optando por trabajar con los socios ISV de Enterprise para comenzar con Docker y sus sistemas relacionados. Si esta no es una opción para usted, querrá equilibrar el costo de asumir Docker por su cuenta con los beneficios potenciales.

Considera la complejidad de tu sistema.

Por último, considere sus requisitos generales. ¿Son sus sistemas lo suficientemente complejos como para justificar la carga adicional de asumir la contenedorización? Si su empresa, por ejemplo, se centra en la creación de sitios web estáticos, es posible que no necesite contenedores.
Docker, y los contenedores que hace posible, ha revolucionado la industria del software y en cinco años, su popularidad como herramienta y plataforma se ha disparado.
La razón principal es que los contenedores crean grandes economías de escala. Los sistemas que solían requerir recursos de hardware costosos y dedicados ahora pueden compartir hardware con otros sistemas. Otra es que los contenedores son autónomos y portátiles. Si un contenedor funciona en un host, funcionará igual de bien en cualquier otro, siempre que ese host proporcione un tiempo de ejecución compatible.
Es importante tener en cuenta que Docker no es una panacea (no lo es la tecnología). Al planificar una estrategia tecnológica, se deben tener en cuenta las concesiones. Mudarse a contenedores no es una tarea trivial.
Considere las ventajas y desventajas antes de comprometerse con una estrategia basada en Docker. Una contabilidad cuidadosa de los beneficios y costos de la contenedorización puede llevarlo a adoptar Docker. Si los números se suman, Docker y los contenedores tienen el potencial de abrir nuevas oportunidades para su empresa.
¿Se pregunta cómo puede supervisar los microservicios para detectar problemas de rendimiento? Raygun APM, Real User Monitoring y Crash Reporting están diseñados teniendo en cuenta las prácticas modernas de desarrollo. Vea cómo la plataforma Raygun puede ayudar a mantener el rendimiento de sus contenedores.

Publicar un comentario

0 Comentarios