Herramientas de usuario

Herramientas del sitio


informatica:sistemas_operativos:cursos:docker_avanzado:fundamentos_docker

Fundamentos de Docker (Docker avanzado)

Contenido perteneciente al curso Docker avanzado.

Docker Engine

Es una aplicación cliente-servidor compuesta por 3 elementos:

  • Docker Daemon (comando dockerd)
  • Un API REST
  • El cliente (comando docker) de la interfaz de línea de comando

El Cliente Docker y el Daemon pueden ejecutarse en la misma máquina, o el cliente se puede conectar a un Docker Daemon remoto

Docker Daemon

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

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

Los registros de Docker

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

Objetos Docker

Contenedores

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

Imágenes

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

Servicios

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.

Dockerfile

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)

Namespaces

Docker usa un conjunto de namespaces para garantizar el aislamiento de cada contenedor.

Docker Engine usa espacios de nombres como los siguientes en Linux:

  • El espacio de nombres pid: aislamiento del proceso (PID: ID del proceso).
  • El espacio de nombres de red: Gestión de interfaces de red (NET: Redes).
  • El espacio de nombres de IPC: gestión del acceso a los recursos de IPC (IPC: comunicación entre procesos).
  • El espacio de nombres mnt: Gestión de puntos de montaje del sistema de archivos (MNT: Mount).
  • 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

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

Sistema de unión de ficheros

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

Formato contenedor

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.

informatica/sistemas_operativos/cursos/docker_avanzado/fundamentos_docker.txt · Última modificación: por tempwin