Docker es una plataforma de código abierto para crear, implementar y administrar aplicaciones en contenedores. Obtenga más información sobre los contenedores, cómo se comparan con las máquinas virtuales y por qué Docker se adopta y utiliza tan ampliamente.
Red Hat OpenShift on IBM Cloud
IBM Cloud Satellite
Docker es una plataforma de código abierto de contenedorización . Permite a los desarrolladores empaquetar aplicaciones en contenedores, componentes ejecutables estandarizados que combinan el código fuente de la aplicación con las bibliotecas del sistema operativo (SO) y las dependencias necesarias para ejecutar ese código en cualquier entorno. Los contenedores simplifican la entrega de aplicaciones distribuidas y se han vuelto cada vez más populares a medida que las organizaciones cambian al desarrollo nativo en la nube y entornos híbridos multinube .
Los desarrolladores pueden crear contenedores sin Docker, pero la plataforma hace que sea más fácil, sencillo y seguro construir, implementar y administrar contenedores. Docker es esencialmente un conjunto de herramientas que permite a los desarrolladores crear, implementar, ejecutar, actualizar y detener contenedores usando comandos simples y automatización que ahorra trabajo a través de una sola API.
Docker también se refiere a Docker, Inc. (el enlace reside fuera de IBM), la empresa que vende la versión comercial de Docker, y al proyecto Docker de código abierto (el enlace se encuentra fuera de IBM), al que contribuyen Docker, Inc. y muchas otras organizaciones e individuos.
Contenedores son posibles gracias a las capacidades de virtualización y aislamiento de procesos integradas en el kernel de Linux . Estas capacidades, como grupos de control (Cgroups) para asignar recursos entre procesos, y espacios de nombres para restringir el acceso o la visibilidad de un proceso a otros recursos o áreas del sistema: permitir que varios componentes de la aplicación compartan los recursos de una sola instancia del sistema operativo host de la misma manera que un hipervisor permite múltiples VM (Máquinas virtuales) para compartir el CPU, memoria y otros recursos de un solo servidor de hardware.
Como resultado, la tecnología de contenedores ofrece todas la funcionalidad y beneficios de las VM - incluido el aislamiento de aplicaciones, la escalabilidad rentable y la disponibilidad - además de importantes ventajas adicionales:
Las empresas que utilizan contenedores informan de otros beneficios que incluyen una mejor calidad de la aplicación y una respuesta más rápida a los cambios del mercado. y mucho más. Obtenga más información con esta herramienta interactiva:
Docker es tan popular hoy en día que "Docker" y "contenedores" se usan indistintamente. Pero las primeras tecnologías relacionadas con contenedores estuvieron disponibles durante años: incluso décadas (el enlace reside fuera de IBM), antes de que Docker fuera lanzado al público en 2013.
Más notablemente, en 2008, LinuXContainers (LXC) se implementó en el Linux kernel, totalmente habilitando la virtualización para una única instancia de Linux. Aunque LXC todavía se utiliza hoy en día, las nuevas tecnologías que utilizan el Linux kernel están disponibles. Ubuntu, un moderno sistema operativo Linux de código abierto, también proporciona esta capacidad.
Docker mejoró las capacidades nativas de contenedorización de Linux con tecnologías que permiten:
Hoy la contenedorización de Docker también funciona con servidor Microsoft Windows . Y la mayoria de los proveedores de nube ofrecen servicios específicos para ayudar a los desarrolladores a crear, enviar y ejecutar aplicaciones en contenedores con Docker.
Por estas razones, la adopción de Docker se disparó rápidamente y sigue aumentando. En el momento de escribir este artículo, Docker Inc. informa 11 millones de desarrolladores y 13 mil millones de imágenes de contenedor descargas cada mes (el enlace reside fuera de IBM).
Algunas de las herramientas y la terminología que encontrará al usar Docker incluyen:
Cada Contenedor Docker comienza con un archivo de texto simple que contiene instrucciones sobre cómo construir la imagen de contenedor Docker . DockerFile automatiza el proceso de creación de imagen de Docker . Es esencialmente una lista de instrucciones de interfaz de línea de comando (CLI) que Docker Engine ejecutará para ensamblar la imagen.
Las imágenes de Docker contienen el código de origen de la aplicación ejecutable, así como todas las herramientas, bibliotecas y dependencias que el código de la aplicación debe ejecutar como contenedor. Cuando ejecuta la imagen de Docker, se convierte en una instancia (o varias instancias) del contenedor.
Es posible construir una imagen de Docker desde cero, pero la mayoría de los desarrolladores las bajan de repositorios comunes. Múltiples imágenes de docker se pueden crear a partir de una única imagen base, y compartirán los puntos en común de su pila.
Las imágenes de Docker se componen de capas , y cada capa corresponde a una versión de la imagen. Siempre que un desarrollador realiza cambios en la imagen, se crea una nueva capa superior, y esta capa superior reemplaza a la capa superior anterior como la versión actual de la imagen. Las capas anteriores se guardan para reversiones o para reutilizarlas en otros proyectos.
Cada vez que se crea un contenedor a partir de una imagen de Docker, se crea otra nueva capa llamada capa contenedora. Los cambios realizados en el contenedor, como la adición o eliminación de archivos, se guardan solo en la capa del contenedor y solo existen mientras el contenedor se está ejecutando. Este proceso iterativo de creación de imágenes permite una mayor eficiencia general, ya que varias instancias de contenedores en vivo pueden ejecutarse desde una sola imagen base y, cuando lo hacen, aprovechan una pila común.
Los contenedores Docker son las instancias en vivo y en ejecución de imágenes de Docker. Mientras que las imágenes de Docker son archivos de solo lectura, los contenedores son contenido en vivo, efímero y ejecutable. Los usuarios pueden interactuar con ellos y los administradores pueden ajustar su configuración y condiciones usando comandos de Docker.
Docker Hub (el enlace reside fuera de IBM) es el repositorio público de Imágenes de docker que se autodenomina "la biblioteca y comunidad más grande del mundo para imágenes de contenedores". Tiene más de 100.000 imágenes de contenedor procedentes de proveedores de software comercial, proyectos de código abierto y desarrolladores individuales. Incluye imágenes producidas por Docker, Inc., imágenes certificadas que pertenecen al Docker Trusted Registry y muchos miles de otras imágenes.
Todos los usuarios de Docker Hub pueden compartir sus imágenes. También pueden descargar imágenes base predefinidas desde filesystem de Docker para usar como punto de partida para cualquier proyecto de contenedorización .
Docker daemon es un servicio que se ejecuta en su sistema operativo, como Microsoft Windows o Apple MacOS o iOS. Este servicio crea y gestiona sus imágenes Docker para usted usando los comandos del cliente, actuando como el centro de control de su implementación de Docker.
Un registro de Docker es un sistema de almacenamiento y distribución escalable de código abierto para imágenes de Docker. El registro le permite rastrear versiones de imágenes en repositorios, usando etiquetas para identificación. Esto se logra usando git, una herramienta de control de versiones.
Si está ejecutando solo unos pocos contenedores, es bastante sencillo administrar su aplicación dentro de Docker Engine, el tiempo de ejecución de la industria de facto . Pero si su implementación comprende miles de contenedores y cientos de servicios, es casi imposible administrar ese flujo de trabajo sin la ayuda de estas herramientas especialmente diseñadas.
Si está creando una aplicación a partir de procesos en varios contenedores que residen en el mismo host, puede usar Docker Compose para gestionar la arquitectura de la aplicación. Docker Compose crea un archivo YAML que especifica qué servicios están incluidos en la aplicación y pueden implementar y ejecutar contenedores con un solo comando. Utilizando Docker Compose, también puede definir volúmenes persistentes para el almacenamiento, especificar nodos base y documentar y configurar las dependencias de servicio.
Para monitorear y administrar los ciclos de vida de contenedor en entornos más complejos, deberá recurrir a una herramienta de orquestación de contenedores . Si bien Docker incluye su propia herramienta de orquestación (llamada Docker Swarm), la mayoría de los desarrolladores eligen Kubernetes .
Kubernetes es una plataforma de orquestación de contenedores de código abierto descendiente de un proyecto desarrollado para uso interno en Google. Kubernetes programa y automatiza tareas integrales para la gestión de arquitecturas basadas en contenedores, incluida la implementación de contenedores, actualizaciones, descubrimiento de servicios, aprovisionamiento de almacenamiento, balanceo de carga , monitoreo de salud y más. Además, el ecosistema de herramientas de código abierto para Kubernetes, incluido Istio y Knative—permite a las organizaciones implementar una Plataforma como servicio (PaaS) de alta productividad para aplicaciones en contenedores y una rampa de acceso más rápida para la computación sin servidor .
Para una inmersión más profunda en Kubernetes, vea el video "Kubernetes Explicado":
Una plataforma de contenedores empresarial proporciona orquestación en múltiples nubes públicas y privadas, para unificar sus entornos para mejorar el rendimiento empresarial y el rendimiento operativo. Es un componente clave de una estrategia de nube híbrida abierta que le permite evitar el bloqueo de proveedores, crear y ejecutar cargas de trabajo en cualquier lugar con consistencia y optimizar y modernizar toda su TI.
Dé el siguiente paso:
Empiece con una cuenta de IBM Cloud hoy mismo.
Una estrategia en la nube híbrida abierta le permite crear y gestionar cargas de trabajo desde cualquier lugar, sin dependencia de un proveedor
Red Hat OpenShift en IBM Cloud aprovecha OpenShift en entornos públicos e híbridos para obtener velocidad, capacidad de respuesta al mercado, escalabilidad y confiabilidad.
Con IBM Cloud Satellite puede implementar servicios en la nube coherentes en cualquier lugar; de forma local, en el borde y en los entornos de nube pública.
Gracias a las soluciones de almacenamiento de nube híbrida de IBM, almacene datos en el lugar más conveniente para las aplicaciones y los servicios a través de una nube pública, privada y local.
Descubra cómo un enfoque de servicios gestionados en la nube ayuda a mitigar la tensión potencial entre la gestión de TI tradicional y la cultura DevOps.