Docker
leadspace en la nube
Docker

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.

Productos destacados

Red Hat OpenShift on IBM Cloud

IBM Cloud Satellite


¿Qué es Docker?

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.


Cómo funcionan los contenedores y por qué son tan populares

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:

  • Peso más ligero: a diferencia de VM, contenedores no llevan la carga útil de una instancia de SO completa e  hipervisor; incluyen solo los procesos del sistema operativo y  dependencias  que se necesitan para ejecutar el código. Los tamaños de los contenedores se miden en megabytes (frente a gigabytes para algunas VM), hacen un mejor uso de la capacidad del hardware y tienen menors tiempos de  puesta en marcha .
  • Mayor eficiencia de recursos: con los contenedores, puede ejecutar varias veces la cantidad de copias de una aplicación en el mismo hardware que puede usar  VM. Esto puede reducir su gasto en la nube.
  • Productividad mejorada del desarrollador: en comparación con  Las máquinas virtuales y los contenedores son más rápidos y fáciles de implementar, aprovisionar y reiniciar. Esto los hace ideales para su uso en pipelines de  integración continua  y  entrega continua (CI / CD) y una mejor opción para los equipos de desarrollo que adoptan prácticas  Ágiles  y de  DevOps .

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:

Descargue el informe completo: contenedores en la empresa (PDF, 1,4 MB)

¿Por qué utilizar Docker?

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:

  • Portabilidad mejorada y sin problemas: aunque los contenedores  LXC  a menudo hacen referencia a configuraciones específicas de la máquina, los  contenedores Docker  se ejecutan sin modificaciones en cualquier entorno de escritorio, centro de datos y nube.
  • Incluso un peso más ligero y actualizaciones más granulares: con  LXC, se pueden combinar múltiples procesos en un solo contenedor. Con  contenedores Docker, solo se puede ejecutar un proceso en cada contenedor. Esto hace posible crear una aplicación que pueda continuar ejecutándose mientras una de sus partes se retira para una actualización o reparación.
  • Creación de contenedores automatizada:  Docker puede construir automáticamente un contenedor basado en el código fuente de la aplicación.
  • Control de versiones del contenedor: Docker puede rastrear versiones de una  imagen del contenedor, retroceder a versiones anteriores y rastrear quién creó una versión y cómo. Incluso puede cargar solo los deltas entre una versión existente y una nueva.
  • Reutilización de contenedores: los contenedores existentes se pueden utilizar como imágenes base— esencialmente como plantillas para construir  contenedores nuevos.
  • Bibliotecas de contenedores compartidas: los desarrolladores pueden acceder a un fuente abierta  registro que contiene miles de contenedores aportados por los usuarios.

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).


Términos y herramientas de Docker

Términos y herramientas de Docker

Algunas de las herramientas y la terminología que encontrará al usar Docker incluyen:

DockerFile

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.

Imágenes de Docker

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.

Contenedores Docker

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

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

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.

Registro 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.


Implementación y orquestación de Docker

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.

Docker Compose


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.

Kubernetes


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": 


Docker e IBM Cloud

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:

  • Implemente clústeres de Kubernetes totalmente gestionados y de alta disponibilidad con Red Hat OpenShift on IBM Cloud, un servicio OpenShift gestionado que aprovecha la escala empresarial y la seguridad de IBM Cloud para automatizar las actualizaciones, el escalamiento y el suministro.
  • Implemente y ejecute aplicaciones en entornos locales, de edge computing y de nube pública de cualquier proveedor con IBM Cloud Satellite, una solución gestionada en la nube distribuida
  • Simplifique y consolide sus data lakes mediante la implementación sin problemas de almacenamiento empresarial habilitado para contenedores en entornos de nube pública y local con soluciones de almacenamiento en la nube híbrida de IBM
  • Simplifique la gestión de TI híbrida compleja con los servicios gestionados de IBM Cloud.

Empiece con una cuenta de IBM Cloud hoy mismo.


Soluciones relacionadas

Nube híbrida

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 on IBM Cloud

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.


IBM Cloud Satellite

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.


Soluciones de almacenamiento de nube híbrida

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.


Servicios de nube

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.