Iniciar sesión / Registrar Cuenta
Jump to section

¿Qué es DOCKER?

Copiar URL

El término "Docker" se aplica a diferentes conceptos, entre los que se incluyen un proyecto de la comunidad open source y sus herramientas; Docker Inc., la principal empresa promotora del proyecto; y las herramientas que la empresa respalda formalmente. El hecho de que las tecnologías y la compañía compartan el mismo nombre puede ser confuso.

Esto es lo que debe saber:

  • El sistema de software de TI llamado "Docker" es la tecnología de organización en contenedores que posibilita la creación y el uso de los contenedores de Linux®.
  • La comunidad open source Docker se encarga de mejorar estas tecnologías para beneficiar a todos los usuarios.
  • La empresa, Docker Inc., se basa en el trabajo de la comunidad Docker para aumentar la seguridad de las herramientas y comparte los avances con el resto de la comunidad. Entonces, brinda soporte a las tecnologías mejoradas y reforzadas para los clientes empresariales.

Con Docker, podrá utilizar los contenedores como máquinas virtuales muy livianas y modulares, y obtendrá la flexibilidad necesaria para crearlos, implementarlos, copiarlos y trasladarlos de un entorno a otro, lo cual le permite optimizar sus aplicaciones para la nube.

La tecnología Docker utiliza el kernel de Linux y sus funciones, como los grupos de control y los espacios de nombre, para dividir los procesos y ejecutarlos de manera independiente. El propósito de los contenedores es ejecutar varios procesos y aplicaciones por separado para que se pueda aprovechar mejor la infraestructura y, al mismo tiempo, conservar la seguridad que se obtendría con los sistemas individuales.

Las herramientas de contenedores, como Docker, proporcionan un modelo de implementación basado en imágenes, que permite compartir una aplicación o un conjunto de servicios con todas sus dependencias en varios entornos. Docker también automatiza la implementación de las aplicaciones (o los conjuntos de procesos que las constituyen) en el entorno de contenedores.

Estas herramientas están diseñadas a partir de los contenedores de Linux, por eso la tecnología Docker es sencilla y única. Además, ofrecen a los usuarios acceso sin precedentes a las aplicaciones, la posibilidad de realizar implementaciones en poco tiempo y el control sobre las versiones y su distribución.

Si bien ambos conceptos suelen confundirse, no son iguales. Originalmente, Docker se diseñó a partir de la tecnología LXC, la cual mucha gente asocia con los contenedores "tradicionales" de Linux, pero desde aquel entonces se ha ido alejando de esa dependencia. LXC funcionaba como una virtualización ligera, pero no ofrecía una buena experiencia al desarrollador ni al usuario. La tecnología Docker no solo ofrece la capacidad para ejecutar los contenedores, sino que también facilita su creación y diseño, así como el envío y el control de versiones de las imágenes, entre otras funciones.

Los contenedores tradicionales de Linux usan un sistema init para gestionar varios procesos, lo cual permite que las aplicaciones completas se ejecuten como una sola. La tecnología Docker pretende que se dividan las aplicaciones en sus procesos individuales y ofrece las herramientas para hacerlo. Este enfoque de separación de los elementos tiene sus ventajas.

Modularidad

El enfoque de Docker sobre la organización en contenedores se centra en la capacidad de separar una parte de la aplicación para actualizarla o repararla, sin necesidad de deshabilitar la aplicación completa. Además del modelo basado en los microservicios, puede intercambiar procesos entre varias aplicaciones casi de la misma forma en que funciona la arquitectura orientada a los servicios (SOA).

Capas y control de versiones de imágenes

Cada archivo de imagen Docker está compuesto por varias capas que conforman una sola imagen. Cuando un usuario especifica un comando, como ejecutar o copiar, la imagen cambia, y se crea una capa nueva.

Docker reutiliza las capas para agilizar el diseño de los contenedores nuevos. Los cambios intermedios se comparten entre las imágenes para mejorar aún más la agilidad, el tamaño y la eficiencia. El control de versiones también es propio de la creación de capas: el registro incorporado de los cambios le brinda el control total de las imágenes de contenedores cada vez que se produce una modificación.

Restauración

Uno de los mayores beneficios de las capas es la capacidad de restauración. Todas las imágenes cuentan con capas. Si no le gusta la repetición actual de una imagen, puede restaurarla a una versión anterior. Esto respalda el enfoque de desarrollo ágil y permite lograr la integración e implementación continuas (CI/CD) desde la perspectiva de las herramientas.

Implementación rápida

Antes, se necesitaban varios días para poner en marcha un nuevo hardware, implementarlo y ponerlo a disposición de los usuarios, lo cual implicaba un esfuerzo y un costo abrumadores. Con los contenedores basados en Docker, la implementación se puede realizar en cuestión de segundos. Cada proceso se encuentra en un contenedor distinto, por lo que puede compartirlos con aplicaciones nuevas rápidamente. Además, ya que no es necesario iniciar el sistema operativo para agregar o trasladar un contenedor, los tiempos de implementación son mucho más cortos, lo cual le permite crear datos y eliminar aquellos que generen los contenedores de manera fácil y rentable, sin preocupaciones.

En definitiva, la tecnología Docker tiene un enfoque más detallado y controlable, que se basa en los microservicios y que prioriza la eficiencia.

Docker, por sí solo, puede gestionar contenedores individuales. Si comienza a utilizar cada vez más contenedores y aplicaciones que se alojan en ellos con cientos de elementos, se dificultará su gestión y organización. En algún momento, deberá cambiar el enfoque y agrupar los contenedores para prestar los servicios, como las redes, la seguridad y la telemetría, entre otros, en todos los contenedores. Allí entra en juego Kubernetes.

 

Docker no ofrece las mismas funciones tipo UNIX que se obtienen con los contenedores tradicionales de Linux, como la capacidad para usar los procesos como cron o syslog dentro del contenedor, junto con la aplicación. Esta tecnología también implica otras limitaciones, por ejemplo, en cuanto a la eliminación de los procesos derivados de los secundarios después de borrar estos últimos, lo cual se realiza de manera natural en los contenedores tradicionales de Linux. A pesar de que no resulte evidente a simple vista, se pueden reducir estas complicaciones al modificar el archivo de configuración y establecer esas habilidades desde el comienzo.

Además, hay otros subsistemas y dispositivos de Linux que no cuentan con espacios de nombres, como SELinux, los grupos de control y los dispositivos /dev/sd*. Esto implica que, si un atacante obtiene control de estos subsistemas, el host se ve comprometido. El hecho de compartir el kernel del host con los contenedores para mantener la agilidad podría poner en riesgo la seguridad. En cambio, las máquinas virtuales son diferentes, ya que están bien separadas del sistema host.

 

El daemon de Docker también puede representar un problema en materia de seguridad. Para usar y ejecutar los contenedores de Docker, es muy probable que utilice el daemon de la misma tecnología, un tiempo de ejecución persistente para los contenedores que requiere privilegios de superusuario, por lo que se debe prestar especial atención a dónde se encuentra el proceso y quiénes obtienen acceso a él. Por ejemplo, un daemon local posee una superficie de ataque más pequeña que uno que se encuentra en una ubicación más pública, como un servidor web.

Illustration - mail

Obtenga más contenido como este

Suscríbase a nuestro boletín informativo: Red Hat Shares.