Contenido perteneciente al curso Docker avanzado.
Es una aplicación cliente-servidor compuesta por 3 elementos:
dockerd)El Cliente Docker y el Daemon pueden ejecutarse en la misma máquina, o el cliente se puede conectar a un Docker Daemon remoto
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.
Un daemon también puede comunicarse con otros daemons para administrar los servicios de Docker.
El cliente Docker (docker) es la forma principal en que muchos usuarios de Docker interactúan con Docker
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
Un registro de Docker almacena imágenes de Docker
Docker Hub y Docker Cloud son registros públicos que cualquiera puede usar
Docker está configurado para buscar imágenes en Docker Hub de manera predeterminada. Incluso podemos ejecutar nuestro propio registro privado
Los comandos docker pull o docker run, las imágenes necesarias se extraen del registro configurado
Un contenedor es una instancia ejecutable de una imagen
Se puede crear, iniciar, detener, mover o eliminar un contenedor utilizando la API Docker o el CLI
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
Relativamente bien aislado de otros contenedores y su máquina host
Se define por su imagen y por las opciones de configuración que se le proporciona cuando se crea o inicia
Cuando se elimina un contenedor, desaparecen los cambios en su estado que no se almacenan en el almacenamiento persistente
Una imagen es una plantilla de 'solo lectura' con instrucciones para crear un contenedor Docker
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
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
Cada miembro de un enjambre es un demonio Docker, y todos los demonios se comunican mediante la API Docker
Permite definir el estado deseado, como el número de réplicas del servicio que deben estar disponibles en un momento dado
De manera predeterminada, el servicio tiene balanceo de carga en todos los nodos de trabajo
Para el usuario, el servicio Docker parece ser una sola aplicación
Docker Engine admite el modo enjambre en Docker 1.12 y superior
A día de hoy se usa Kubernetes u Openshift.
Se utilizan para crear imágenes de contenedor
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)
Docker usa un conjunto de namespaces para garantizar el aislamiento de cada contenedor.
Docker Engine usa espacios de nombres como los siguientes en Linux:
Un cgroup limita una aplicación a un conjunto específico de recursos
Estos grupos permiten que Docker Engine comparta los recursos de hardware disponibles con los contenedores y, opcionalmente, imponga límites y restricciones
Por ejemplo, se puede limitar la cantidad de memoria disponible para un contenedor específico
Los sistemas de unión de ficheros, o UnionFS, son sistemas de archivos que operan creando capas, haciéndolos muy livianos y rápidos
Docker Engine utiliza UnionFS para proporcionar los bloques de construcción para contenedores
Docker Engine puede usar múltiples variantes de UnionFS, incluidas AUFS, btrfs, vfs y DeviceMapper
Docker Engine combina los namespaces, cgroups y UnionFS en un contenedor llamado formato contenedor.
El formato de contenedor predeterminado es libcontainer.
En el futuro, Docker puede admitir otros formatos de contenedor al integrarse con tecnologías como BSD Jails o Solaris Zones.