Docker emplea una arquitectura de cliente/servidor. El siguiente es un desglose de los componentes principales asociados con Docker, junto con otros términos y herramientas de Docker.
Servidor Docker: Un servidor Docker es una máquina física o virtual que ejecuta Linux (u otro SO compatible con Docker-Engine).
Docker Engine: Docker Engine es una aplicación de cliente/servidor que consta del servicio Docker, una API de Docker que interactúa con el servicio y una interfaz de línea de comandos (CLI) que se comunica con el servicio.
Servicio Docker: El servicio Docker es el que crea y administra imágenes de Docker, mediante el uso de los comandos del cliente. Esencialmente, el servicio Docker sirve como el centro de control para la implementación de Docker.
Cliente Docker: el cliente Docker proporciona la CLI que accede a la API de Docker (una API REST) para comunicar con el servicio de Docker a través de sockets Unix o una interfaz de red. El cliente puede conectarse a un servicio de forma remota, o un desarrollador puede ejecutar el servicio y el cliente en el mismo sistema informático.
Objetos de Docker: Los objetos de Docker son componentes de un despliegue de Docker que ayudan a empaquetar y distribuir aplicaciones. Incluyen imágenes, contenedores, redes, volúmenes, plug-ins y mucho más.
Contenedores Docker: Los contenedores de Docker son las instancias en tiempo real y en ejecución de las imágenes de Docker. Si bien las imágenes Docker son archivos de solo lectura, los contenedores son contenido ejecutable, efímero y en vivo. Los usuarios pueden interactuar con ellos y los administradores pueden ajustar su configuración y condiciones utilizando comandos de Docker.
Imágenes de Docker: Las imágenes de Docker contienen código fuente de la aplicación ejecutable y todas las herramientas, bibliotecas y dependencias que el código de la aplicación necesita para ejecutar como contenedor. Cuando un desarrollador ejecuta la imagen de Docker, se convierte en una instancia (o varias instancias) del contenedor.
Es posible crear imágenes Docker desde cero, pero la mayoría de los desarrolladores las extraen de repositorios comunes. Los desarrolladores pueden crear varias imágenes Docker a partir de una única imagen base y comparten los elementos comunes de su pila.
Las imágenes de Docker se componen de capas, y cada capa corresponde a una versión de la imagen. Cada vez 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 retrocesos o para reutilizarlas en otros proyectos.
Cada vez que se crea un contenedor a partir de una imagen de Docker, se crea otra capa nueva llamada capa de contenedor. Los cambios realizados en el contenedor, como agregar o eliminar archivos, se guardan en la capa de contenedor y solo existen mientras el contenedor se está ejecutando.
Este proceso iterativo de creación de imágenes aumenta la eficiencia general, ya que varias instancias de contenedores activos pueden ejecutar a partir de una única imagen base. Cuando lo hacen, emplean una pila común.
Construcción de Docker: Construcción de Docker es un comando que tiene herramientas y características para crear imágenes de Docker.
Dockerfile: Cada contenedor acoplador comienza con un archivo de texto simple que contiene instrucciones para crear la imagen del contenedor Docker. Dockerfile automatiza el proceso de creación de imágenes Docker. Es esencialmente una lista de instrucciones de la CLI que Docker Engine ejecutará para ensamblar la imagen. La lista de comandos Docker es amplia pero estandarizada: las operaciones Docker funcionan igual independientemente de los contenidos, infraestructura u otras variables del entorno.
Documentación de Docker: la documentación de Docker, o documentos de Docker, se refiere a la biblioteca oficial de recursos, manuales y guías de Docker para crear aplicaciones en contenedores.
Docker Hub: Docker Hub6 es el repositorio público de imágenes de Docker, y se autodenomina la biblioteca y comunidad de imágenes de contenedores más grande del mundo7. Contiene más de 100 000 imágenes de contenedores procedentes de proveedores de software comercial, proyectos de código abierto y desarrolladores individuales. Docker Hub incluye imágenes producidas por Docker, Inc., imágenes certificadas que pertenecen al Docker Trusted Registry y miles de otras imágenes.
Todos los usuarios de Docker Hub pueden compartir sus imágenes a voluntad.También pueden descargar imágenes base predefinidas del sistema de archivos Docker como punto de partida para cualquier proyecto de contenerización.
Existen otros repositorios de imágenes, comoGitHub8. GitHub es un servicio de alojamiento de repositorios, muy conocido por sus herramientas de desarrollo de aplicaciones y como plataforma que fomenta la colaboración y la comunicación. Los usuarios de Docker Hub pueden crear un repositorio (repo) que puede contener muchas imágenes. El repositorio puede ser público o privado y vinculado a cuentas de GitHub o BitBucket.
Escritorio Docker: Escritorio Docker es una aplicación para Mac o Windows que incluye Docker Engine, cliente Docker CLI, Docker Compose, Kubernetes y otros. También proporciona acceso a Docker Hub.
Registro de Docker: Un registro de Docker es un sistema de distribución y almacenamiento escalable y de código abierto para imágenes Docker. Permite a los desarrolladores rastrear las versiones de imágenes en repositorios mediante el uso de etiquetas para su identificación. Este seguimiento e identificación se logra mediante Git, una herramienta de control de versiones.
Complementos de Docker: los desarrolladores utilizan complementos para hacer que Docker Engine sea aún más funcional. Se incluyen varios complementos de Docker que admiten autorización, volumen y red en el sistema de complementos de Docker Engine; también se pueden cargar complementos de terceros.
Extensiones Docker: Las extensiones de Docker permiten a los desarrolladores emplear herramientas de terceros dentro de Docker Desktop para ampliar sus funciones. Las extensiones para herramientas de desarrolladores incluyen desarrollo de aplicaciones Kubernetes, seguridad, observabilidad y más.
Docker Compose: los desarrolladores pueden usar Docker Compose para gestionar aplicaciones multicontenedor, donde los contenedores se ejecutan en el mismo host de Docker. Docker Compose crea un archivo YAML (.YML) que especifica los servicios que se incluyen en la aplicación, y puede desplegar y ejecutar contenedores con un solo comando. Debido a que la sintaxis YAML es independiente del lenguaje, los archivos YAML se pueden usar en programas escritos en Java, Python, Ruby y muchos otros lenguajes.
Los desarrolladores también pueden usar Docker Compose para definir volúmenes persistentes para almacenamiento, especificar nodos base y documentar y configurar dependencias de servicio.