Herramientas de usuario

Herramientas del sitio


informatica:sistemas_operativos:cursos:docker_avanzado:fundamentos_docker

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Próxima revisión
Revisión previa
informatica:sistemas_operativos:cursos:docker_avanzado:fundamentos_docker [2023/10/10 15:57] – creado tempwininformatica:sistemas_operativos:cursos:docker_avanzado:fundamentos_docker [2023/10/10 17:57] (actual) tempwin
Línea 2: Línea 2:
  
 Contenido perteneciente al curso [[informatica:sistemas_operativos:cursos:docker_avanzado|Docker avanzado]]. Contenido perteneciente al curso [[informatica:sistemas_operativos:cursos:docker_avanzado|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.1696946258.txt.gz · Última modificación: por tempwin