Bases físicas y lógicas de los contenedores
Clase 3 de 48 • Curso de Arquitectura de Aplicaciones con Docker 2018
Contenido del curso
Contenedores: ¿Qué son?
- 1

Contenedores: Qué son y cómo encajan con DevOps
08:35 min - 2

Ejemplo: Casos de uso de contenedores en las empresas
01:40 min - 3

Bases físicas y lógicas de los contenedores
Viendo ahora - 4

Reto 1. Herramientas necesarias para trabajar con Docker
07:44 min - 5

Reto 2. Sistemas de contenedores: historia, parecidos y diferencias
01:34 min
Uso básico de contenedores
- 6

Retos en la instalación de Docker en diferentes sistemas
11:25 min - 7

Validación de post instalación de Docker
02:44 min - 8

Uso básico de Docker: Imágenes, contenedores de Docker
13:25 min - 9

¿Qué hay en un contenedor?
10:41 min - 10

Volúmenes y almacenamiento de la información en contenedores
03:03 min - 11

Gestionando los contenedores instalados
08:21 min - 12

Reto 3. Trabajando con imágenes 'oficiales'
01:19 min - 13

Solución al reto 3
04:26 min - 14

Reto 4. Uso de imágenes locales
00:55 min - 15

Plugins: funcionalidad añadida y algún plugin interesante
06:56 min - 16

Configuración de Docker
00:59 min
Microservicios; APIs con REST
- 17

Protocolo HTTP, órdenes y mensajes de estado
04:22 min - 18

Qué es un API REST y buenas prácticas en su diseño
04:15 min - 19

Implementando un API REST en diferentes lenguajes
02:52 min - 20

Implementando un API REST en Python y ejecutándolo
04:24 min - 21

Reto 5. Diseño de una estructura de datos básica en Python
01:38 min
Contenedores y microservicios
- 22

Aislando microservicios en contenedores: Uso de Dockerfiles
11:31 min - 23

Puertos y cómo configurarlos
07:59 min - 24

Invocando contenedores
06:53 min - 25

ENTRYPOINT y CMD
03:52 min - 26

Trabajando con datos: Volúmenes
04:42 min - 27

Reto 6. "Contenedorizar" una aplicación usando Dockerfiles y despliegue
01:51 min - 28

Herramientas básicas en arquitecturas de microservicios
02:29 min - 29

Instalación de docker-compose
02:32 min - 30

Componiendo servicios con docker-compose.
09:30 min - 31

Usando docker stack deploy
05:39 min - 32

Creando puentes de red
08:42 min - 33

Reto 7. Desplegando un microservicio en la nube usando PaaS
01:42 min
Despliegue de contenedores en la nube
- 34

Instalación del cliente de Azure
03:14 min - 35

Clientes de servicios cloud y como usarlos en nuestra aplicación
13:37 min - 36

Creación de un contenedor en la nube
08:08 min - 37

Despliegue seguro de microservicios
07:44 min - 38

Integrando contenedores en aplicaciones en la nube
04:49 min - 39

Instalando Docker Cloud
01:54 min - 40

Iniciación al API de Docker Cloud
07:35 min - 41

Usando cloud.docker.com
07:01 min - 42

Uso de Docker Cloud, cómo desplegar un servicio en un contenedor
07:40 min - 43

Cómo desplegar un stack
10:43 min - 44

Reto 9: desplegando en una nube comercial
01:37 min
Orquestación de contenedores
En qué se basan los contenedores
Los contenedores se basan en el aislamiento de recursos: aislamiento de sistema de ficheros, de espacio de procesos, de memoria. Es decir, hacen que los procesos dentro del contenedor no tengan acceso a lo que ocurra fuera del mismo; aunque esto no sucede al revés. El hecho de que el espacio de procesos esté aislado implica que cualquier programa, tenga el privilegio que tenga, dentro del contenedor no podrá ver los programas que se ejecuten fuera; lo mismo ocurre con el sistema de ficheros: el directorio raíz, que en realidad estará físicamente en un directorio en la máquina anfitrión, será para los procesos de dentro el único directorio raíz posible, y así con el resto de los elementos de un sistema operativo: espacio de nombres, por ejemplo, o la memoria.
Bases lógicas
Estos mecanismos de aislamiento son propios del kernel o núcleo del sistema operativo, apoyado en algunos casos por mecanismos de los procesadores. Esta es una de las diferencias principales con los mecanismos de virtualización, que en los casos principales actúan a nivel del procesador. Es el procesador el que aísla la memoria o el sistema de ficheros; en el caso de Docker y otros sistemas de contenedores, es el sistema operativo.
Esto implica varias cosas: primero, los contenedores son específicos del sistema operativo; un contenedor para un sistema operativo (y, por supuesto, procesador), no será ejecutable en otro. En ese sentido, conviene más asimilar un contenedor a un ejecutable (que también son específicos de sistemas operativos) que a una máquina virtual. Segundo, los contenedores no incluyen un kernel, usan el kernel externo. Eso hacen que sean mucho más ligeros y se puedan ejecutar (y destruir) rápidamente.
Estos mecanismos del sistema operativo expuestos a través de un interfaz de aplicación, una serie de bibliotecas que se reúnen en una sola; por eso se puede portar Docker a diferentes sistemas operativos, al crear versiones diferentes de esta biblioteca. Los programas de línea de órdenes (u otros) pueden simplemente recompilarse, aunque una vez más los mecanismos de bajo nivel impedirán que se ejecuten programas de una arquitectura en otra. Es decir, los sistemas de gestión de contenedores abstraen estos mecanismos de los núcleos de los diferentes sistemas operativos para ofrecer un interfaz uniforme.
En general, los servicios en la nube ofrecen alojamiento para contenedores basados en Linux; algunos, como Azure, pueden ofrecer también soporte para Windows. Por eso y por el momento, Linux es el sistema operativo aconsejable para crear y trabajar con contenedores.
Los contenedores no son máquinas virtuales
Aunque se suelen usar el término virtualización ligera para referirnos a ellos, un contenedor no virtualiza un procesador, aísla el contenido del exterior y de otros procesadores.
Como no son máquinas virtuales, en general los contenedores sólo se pueden ejecutar en un sistema operativo, aquél para el que se han creado.O sea:
Contenedores de Linux en Linux (en cualquiera), contenedores de Windows en Windows. Entre Linux y Windows existe cierto tipo de interoperabilidad, al implementar las últimas versiones de Windows, en algunos casos, un subsistema Ubuntu para llevar a cabo este tipo de cosas. Al revés, sin embargo, no es cierto.
Este panorama general cambia en algunos casos: en realidad los contenedores usan máquinas virtuales, así que en Mac se pueden ejecutar los de Linux y Windows. Sin embargo, esto es un tema probablemente temporal y en el futuro es posible que se implementen para el kernel del MacOS los mecanismos para que haya una virtualización real.