linux docker

Definición: acoplador

Docker se ha convertido en el estándar de facto cuando se trata de implementaciones basadas en contenedores. Desde implementaciones a pequeña escala hasta aplicaciones empresariales a gran escala, Docker sirve como base para la orquestación basada en contenedores.

Docker ha ganado tanta popularidad y adopción en la comunidad DevOps en poco tiempo debido a la forma en que está desarrollado para la portabilidad y diseñado para la arquitectura de microservicios moderna.

La evolución de los contenedores

Si cree que la contenedorización es una tecnología nueva, no lo es. Google utiliza su propia tecnología de contenedorización en su infraestructura durante años.

El concepto de contenedor comenzó en la década de 2000. De hecho, las raíces se remontan a 1979, cuando teníamos chroot, un concepto de cambiar el directorio raíz de un proceso.

Aquí hay una lista de proyectos basados ​​en contenedores que comenzaron en 2000.

¿Qué es un contenedor de Linux (LXC)?

Antes de sumergirse directamente en los conceptos de Docker, primero debe comprender qué es un contenedor de Linux.

En un entorno virtualizado típico, una o más máquinas virtuales se ejecutan en un servidor físico utilizando un hipervisor como Xen, Hyper-V, etc.

Los contenedores, por otro lado, se ejecutan sobre el núcleo del sistema operativo. Podemos llamar a esto virtualización a nivel del sistema operativo.. Antes de entrar en los conceptos subyacentes de los contenedores, es necesario comprender dos conceptos clave de Linux.

  • Área de usuario : Todo el código necesario para la ejecución de programas de usuario (aplicaciones, procesos) se denomina « espacio de usuario ». Cuando inicia una acción de programa, por ejemplo, para crear un archivo, el proceso en el espacio del usuario realiza una llamada del sistema al espacio del kernel.
  • Espacio del núcleo : Este es el corazón del sistema operativo, donde se encuentra el código del kernel.

Un contenedor es un proceso.

Cuando inicia una aplicación, por ejemplo un servidor web Nginx, en realidad está iniciando un proceso. Un proceso en sí es una instrucción autónoma con aislamiento limitado.

¿Qué pasaría si pudiéramos aislar el proceso con solo los archivos y la configuración necesarios para ejecutarse y funcionar? Eso es lo que hace un contenedor.

Un contenedor es en realidad un proceso con suficiente aislamiento. componentes del espacio de usuario para que se sienta como un sistema operativo separado.

El proceso contenedor principal puede tener un proceso secundario. Entonces podemos decir que un contenedor también es un grupo de procesos.

Por ejemplo, cuando inicia un servicio Nginx, inicia un proceso Nginx principal. Luego, el proceso principal cubre sus procesos secundarios, como el administrador de caché, el cargador de caché y los trabajadores.

Entonces, cuando inicia un contenedor Nginx, inicia un proceso maestro Nginx en su entorno aislado. Te mostraré esto de manera práctica en las secciones siguientes.

Cada contenedor tiene su espacio de usuario aislado.y puede ejecutar varios contenedores en un solo host. ¿Esto significa que un contenedor posee todo el sistema operativo? No. A diferencia de una VM con su propio kernel, un contenedor contiene solo los archivos necesarios relacionados con una distribución específica y utiliza el kernel del host compartido. Aún más interesante, puede ejecutar diferentes contenedores basados ​​en distribuciones de Linux en un único host que comparte el mismo espacio del kernel.

Por ejemplo, puede ejecutar un contenedor basado en RHEL, CentOS o SUSE en un servidor Ubuntu. Esto es posible porque para todas las distribuciones de Linux, solo el espacio del usuario es diferente y el espacio del kernel es el mismo.

Concepto subyacente de contenedores de Linux

La siguiente imagen le ofrece una representación visual de Linux continuo.

Los contenedores se aíslan dentro de un host mediante dos características del kernel de Linux llamadas espacios de nombres y cgroups.

Una analogía del mundo real sería un edificio de apartamentos. Aunque se trata de un edificio grande, cada apartamento está aislado para hogares individuales que tienen su propia identidad con contadores de agua, gas y electricidad. Utilizamos hormigón, estructuras de acero y otros materiales de construcción para establecer este aislamiento. No tienes visibilidad de otras casas a menos que te permitan entrar.

Del mismo modo, puede vincularse a un único host que contenga varios contenedores. Para aislar contenedores con su propia CPU, memoria, dirección IP, puntos de montaje y procesos, necesita dos funciones del kernel de Linux llamadas espacios de nombres y cgroups.

A lire également  Definición: ransomware

¿Qué es exactamente Docker?

Docker es un proyecto de código abierto popular escrito en go y desarrollado por Dotcloud (una empresa PaaS).

Es esencialmente un motor de contenedores que utiliza funciones del kernel de Linux, como espacios de nombres y grupos c, para crear contenedores en un sistema operativo.

Es decir, Docker realiza todos los conceptos y características de contenedores que aprendimos en la sección LXC de manera muy simple. Simplemente ejecute algunos comandos y configuraciones de Docker para que los contenedores estén en funcionamiento.

Quizás se pregunte en qué se diferencia Docker de un contenedor de Linux (LXC), ya que todos los conceptos y la implementación son similares.

Docker se creó originalmente en contenedores de Linux (LXC). Más tarde, Docker reemplazó LXC con su propio contenedor de tiempo de ejecución (que ahora es parte de runc).

Además de ser una tecnología de contenedores, Docker tiene componentes de empaquetado bien definidos que facilitan las aplicaciones de empaquetado.. Antes de Docker, no era fácil gestionar contenedores. En otras palabras, hace todo el trabajo necesario para desacoplar su aplicación de la infraestructura al empaquetar todos los requisitos del sistema de la aplicación en un contenedor.

Por ejemplo, si tiene un archivo jar de Java, puede ejecutarlo en cualquier servidor que tenga Java instalado. De la misma forma, Una vez que empaquete un contenedor con las aplicaciones requeridas usando Docker, puede ejecutarlo en cualquier otro host. en el que está instalado Docker.

Diferencia entre ventana acoplable y contenedor

Docker es una tecnología o herramienta desarrollada para gestionar eficientemente la implementación de contenedores.

Entonces, ¿puedo gestionar un contenedor sin Docker? Sí ! Claro. Puede utilizar la tecnología LXC para ejecutar contenedores en servidores Linux.

Todo lo que necesitas saber sobre Docker

Docker es una plataforma de contenedorización ampliamente utilizada. Debe saber que los contenedores y microservicios se utilizan a menudo desde la perspectiva del desarrollo y la implementación de aplicaciones. Este es un desarrollo « nativo de la nube ». Por tanto, Docker es una alternativa muy popular en las empresas. Si quieres tener acceso a un guía completa de Docker, puede ir al sitio web de nuestro socio datascientest.com. Un contenedor es un entorno de ejecución liviano y una alternativa a las técnicas tradicionales de virtualización desde máquinas virtuales.

Para desarrollar software moderno con éxito, las aplicaciones implementadas en el mismo host deben aislarse para evitar que interfieran. Se requieren paquetes para ejecutar aplicaciones. Las máquinas virtuales se utilizan para separar aplicaciones entre sí en un sistema idéntico y para reducir los conflictos entre componentes de software y la competencia por los recursos. Docker es una solución de código abierto, segura y rentable. Docker también se utiliza para ejecutar contenedores en Windows o Mac a través de una capa de virtualización de Linux. Para que sepa dónde acudir para obtener más información sobre Docker y comprender todos los entresijos de esta plataforma de contenedorización.

Para desarrollar software moderno con éxito, las aplicaciones implementadas en el mismo host deben aislarse para evitar que interfieran. Se requieren paquetes para ejecutar aplicaciones. Las máquinas virtuales se utilizan para separar aplicaciones entre sí en un sistema idéntico y para reducir los conflictos entre componentes de software y la competencia por los recursos. Docker es una solución de código abierto, segura y rentable. Docker también se utiliza para ejecutar contenedores en Windows o Mac a través de una capa de virtualización de Linux. Para que sepa dónde acudir para obtener más información sobre Docker y comprender todos los entresijos de esta plataforma de contenedorización.

¿Por qué Docker tiene tanto éxito?

Docker tiene un flujo de trabajo eficiente para mover la aplicación desde la computadora portátil del desarrollador al entorno de prueba y luego a producción. Aprenderá más viendo un ejemplo práctico de cómo empaquetar una aplicación en una imagen de Docker.

¿Sabías que iniciar un contenedor Docker lleva menos de un segundo?

Es increíblemente rápido y puede ejecutarse en cualquier host con un kernel de Linux compatible. (También es compatible con Windows)

Nota : no puede ejecutar un contenedor de Windows en un host de Linux porque no hay soporte del kernel de Linux para Windows. Puede leer sobre los contenedores de Windows desde aquí.

Docker utiliza un sistema de archivos de unión « Copia en escritura » para almacenar sus imágenes. Siempre que se realicen cambios en un contenedor, solo los cambios se escribirán en el disco utilizando el modelo de copia en escritura.

Con el modelo Copiar en escritura, habrás optimizado las capas de almacenamiento compartido para todos tus contenedores.