Docker utiliza una arquitectura cliente/servidor. A continuación se muestra un desglose de los componentes principales asociados a Docker, junto con otros términos y herramientas de Docker.
Host Docker: es una máquina física o virtual que ejecuta Linux (u otro sistema operativo compatible con Docker-Engine).
Docker Engine: es una aplicación cliente/servidor que consta del demonio de Docker, una API de Docker que interactúa con el demonio y una interfaz de línea de comandos (CLI) que se comunica con el demonio.
Docker daemon:es un servicio que crea y administra imágenes Docker, utilizando los comandos del cliente. Esencialmente, daemon sirve como centro de control para implementación Docker.
Cliente Docker: el cliente Docker proporciona la CLI que accede a la API de Docker (una API REST) para comunicarse con el daemon Docker a través de los sockets Unix o una interfaz de red. El cliente puede conectarse a un daemon de forma remota, o un desarrollador puede ejecutar el daemon y el cliente en el mismo sistema informático.
Objetos Docker: los objetos Docker son componentes de una implementación de Docker que ayudan a empaquetar y distribuir aplicaciones. Incluyen imágenes, contenedores, redes, volúmenes, complementos y mucho más.
Contenedores Docker: los contenedores Docker son las instancias vivas y en ejecución de las imágenes Docker. Mientras que las imágenes Docker son archivos de sólo lectura, los contenedores son contenidos vivos, efímeros y ejecutables. Los usuarios pueden interactuar con ellos y los administradores pueden ajustar su configuración y condiciones mediante comandos Docker.
Imágenes Docker: las imágenes Docker contienen el 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 ejecutarse como contenedor. Cuando un desarrollador ejecuta la imagen 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 de Docker a partir de una única imagen base y compartirán los puntos en común de su pila.
Las imágenes Docker están formadas por 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 que sustituye a la anterior como versión actual de la imagen. Las capas anteriores se guardan para revertirlas o para reutilizarlas en otros proyectos.
Cada vez que se crea un contenedor a partir de una imagen Docker, se crea otra capa nueva denominada capa de contenedor. Los cambios realizados en el contenedor, como agregar o eliminar archivos, se guardan en la capa de contenedor y estos cambios solo existen mientras se ejecuta el contenedor.
Este proceso iterativo de creación de imágenes aumenta la eficiencia general, ya que se pueden ejecutar varias instancias de contenedor en vivo desde una sola imagen base. Cuando lo hacen, utilizan una pila común.
Docker build: Docker build es un comando que tiene herramientas y características para crear imágenes de Docker.
Dockerfile: cada contenedor Docker comienza con un simple archivo de texto que contiene instrucciones sobre cómo construir la imagen del contenedor Docker. Dockerfile automatiza el proceso de creación de imágenes Docker. Básicamente, es una lista de instrucciones de la CLI que Docker Engine ejecutará para ensamblar la imagen. La lista de comandos de Docker es enorme pero está estandarizada: las operaciones de Docker funcionan igual independientemente del contenido, la infraestructura o otras variables de entorno.
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 Docker, que se llama a sí mismo la biblioteca y comunidad más grande del mundo para imágenes de contenedores7. 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 a 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 médicos como punto de partida de cualquier proyecto de contenerización.
Existen otros repositorios de imágenes, como GitHub8. 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 que puede contener muchas imágenes. El repositorio puede ser público o privado y vinculado a cuentas de GitHub o BitBucket.
Docker Desktop: Docker Desktop es una aplicación para Mac o Windows que incluye Docker Engine, Docker CLI Client, Docker Compose, Kubernetes y otros. También proporciona acceso a Docker Hub.
Registro Docker: un registro Docker es un sistema de almacenamiento y distribución escalable de código abierto para imágenes Docker. Permite a los desarrolladores realizar un seguimiento de las versiones de las imágenes en los repositorios mediante el etiquetado para la identificación. Este seguimiento e identificación se realiza mediante Git, una herramienta de control de versiones.
Complementos Docker: los desarrolladores utilizan complementos para hacer que Docker Engine sea aún más funcional. En el sistema de complementos del motor Docker se incluyen varios complementos Docker que admiten autorización, volumen y red; también se pueden cargar complementos de terceros.
Extensiones Docker: permiten a los desarrolladores utilizar 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 administrar aplicaciones de varios contenedores, donde todos los contenedores se ejecutan en el mismo host de Docker. Docker Compose crea un archivo YAML (.YML) que especifica qué servicios se incluyen en la aplicación y puede implementar y ejecutar contenedores con un solo comando. Dado que la sintaxis YAML es independiente del lenguaje, los archivos YAML pueden utilizarse en programas escritos en Java, Python, Ruby y muchos otros lenguajes.
Los desarrolladores también pueden utilizar Docker Compose para definir volúmenes persistentes para el almacenamiento, especificar nodos base y documentar y configurar dependencias de servicios.