¡Esta es una revisión vieja del documento!
Fundamentos de Docker (Docker avanzado)
Contenido perteneciente al curso Docker avanzado.
Arquitectura Docker El Docker Daemon u El Docker daemon (dockerd) escucha las solicitudes de la API de Docker y gestiona los objetos de Docker, como imágenes, contenedores, redes y volúmenes. u Un daemon también puede comunicarse con otros daemons para administrar los servicios de Docker. El Cliente Docker u El cliente Docker (docker) es la forma principal en que muchos usuarios de Docker interactúan con Docker u Cuando se utilizan comandos como docker run, el cliente envía estos comandos a dockerd, que los lleva a cabo u El comando docker usa la API Docker. El cliente de Docker puede comunicarse con más de un daemon Los registros de Docker u Un registro de Docker almacena imágenes de Docker u Docker Hub y Docker Cloud son registros públicos que cualquiera puede usar u Docker está configurado para buscar imágenes en Docker Hub de manera predeterminada. Incluso podemos ejecutar nuestro propio registro privado u Los comandos docker pull o docker run, las imágenes necesarias se extraen del registro configurado Objetos Docker: Contenedores u Un contenedor es una instancia ejecutable de una imagen u Se puede crear, iniciar, detener, mover o eliminar un contenedor utilizando la API Docker o el CLI u Se puede conectar un contenedor a una o más redes, adjuntarle almacenamiento o incluso crear una nueva imagen en función de su estado actual u Relativamente bien aislado de otros contenedores y su máquina host u Se define por su imagen y por las opciones de configuración que se le proporciona cuando se crea o inicia u Cuando se elimina un contenedor, desaparecen los cambios en su estado que no se almacenan en el almacenamiento persistente Objetos Docker: Imágenes u Una imagen es una plantilla de 'solo lectura' con instrucciones para crear un contenedor Docker u A menudo, una imagen se basa en otra imagen, con alguna personalización adicional. Por ejemplo, se puede compilar una imagen basada en la imagen Ubuntu, pero que instala el servidor web Apache y nuestra aplicación, así como los detalles de configuración necesarios para ejecutar nuestra aplicación Objetos Docker: Servicios u Los servicios permiten escalar contenedores a través de múltiples demonios Docker, que trabajan juntos como un enjambre con múltiples gerentes y trabajadores u Cada miembro de un enjambre es un demonio Docker, y todos los demonios se comunican mediante la API Docker u Permite definir el estado deseado, como el número de réplicas del servicio que deben estar disponibles en un momento dado u De manera predeterminada, el servicio tiene balanceo de carga en todos los nodos de trabajo u Para el usuario, el servicio Docker parece ser una sola aplicación u Docker Engine admite el modo enjambre en Docker 1.12 y superior Dockerfile u Se utilizan para crear imágenes de contenedor u Un Dockerfile es un documento de texto que contiene toda la información de configuración y los comandos necesarios para ensamblar una imagen de contenedor (tarea que realiza el Docker Daemon)
Namespaces u Docker usa un conjunto de namespaces para garantizar el aislamiento de cada contenedor u Docker Engine usa espacios de nombres como los siguientes en Linux: u El espacio de nombres pid: aislamiento del proceso (PID: ID del proceso). u El espacio de nombres de red: Gestión de interfaces de red (NET: Redes). u El espacio de nombres de IPC: gestión del acceso a los recursos de IPC (IPC: comunicación entre procesos). u El espacio de nombres mnt: Gestión de puntos de montaje del sistema de archivos (MNT: Mount). u El espacio de nombres uts: Aislamiento del núcleo y los identificadores de versión. (UTS: Sistema de tiempo compartido Unix). Control de grupos cgroups u Un cgroup limita una aplicación a un conjunto específico de recursos u Estos grupos permiten que Docker Engine comparta los recursos de hardware disponibles con los contenedores y, opcionalmente, imponga límites y restricciones u Por ejemplo, se puede limitar la cantidad de memoria disponible para un contenedor específico Sistema de unión de ficheros u Los sistemas de unión de ficheros, o UnionFS, son sistemas de archivos que operan creando capas, haciéndolos muy livianos y rápidos u Docker Engine utiliza UnionFS para proporcionar los bloques de construcción para contenedores u Docker Engine puede usar múltiples variantes de UnionFS, incluidas AUFS, btrfs, vfs y DeviceMapper Formato contenedor u Docker Engine combina los namespaces, cgroups y UnionFS en un contenedor llamado formato contenedor u El formato de contenedor predeterminado es libcontainer u En el futuro, Docker puede admitir otros formatos de contenedor al integrarse con tecnologías como BSD Jails o Solaris Zones.
