Iniciar un contenedor Docker que comparta con el host una carpeta
La finalidad del videotutorial es enseñar algo que en algunas ocasiones seguro te será necesario, que es compartir una carpeta de tu host con un container o contenedor basado en Docker.
Mucha gente, cuando oye hablar de Docker lo primero que piensa es en máquinas virtuales (MV), por ello, para entender lo que es un contenedor lo primero que debemos saber es que es una MV. Las MV lo que hacen es ejecutar un sistema operativo de manera independiente sobre otro sistema operativo, compartiendo el HW con el host, de modo que lo puedan utilizar varios sistemas operativos a la vez. Para compartir todo esto es necesaria la instalación de un software que se ejecuta por encima del sistema operativo, el llamado Hypervisor.
Sin embargo, un contenedor, Docker en nuestro caso, es más ligero, ya que funciona utilizando el sistema operativo de la máquina en la que se ejecuta el contenedor, y obtiene con ello un gran ahorro en recursos y aumenta considerablemente el rendimiento. Los contenedores permiten desplegar aplicaciones mas rápido, arrancarlas y pararlas más rápido y aprovechar mejor los recursos HW. Para llevar a cabo todo esto sustituimos el software Hypervisor de las MV por el denominado “Docker Engine”, servicio en ejecución de Docker.
En las imágenes que os muestro a continuación se ve perfectamente la diferencia entre ejecutar una u otra opción, siendo la primera con la ejecución de varios contenedores en una misma máquina y la segunda la de varias máquinas virtuales ejecutándose en un mismo host.
Uno de los principales problemas que nos podemos encontrar a la hora de ejecutar contenedores Docker es que, si la máquina host que los alberga empieza a fallar, esto repercute de forma directa en dichos contenedores. En los contenedores Docker/Windows, si falla el contenedor base, todos los que se ejecutan sobre él fallarán también.
Para ello disponemos de otro tipo de contenedores, llamados Containers Hyper-V, que lo que hacen es crear máquinas virtuales Hyper-V para cada contenedor, de forma que estén completamente aislados. Estos contenedores son menos eficientes en cuanto al consumo de recursos porque deben ejecutar un Sistema Operativo por cada Container que queramos ejecutar, pero son más seguros de cara a si tenemos un fallo del sistema. El escenario de uso de los contenedores Hyper-V serían entornos en los que se requiere muy alta disponibilidad.
Queda a elección del usuario y de la situación en la que nos encontremos, la elección de uno u otro tipo de contenedor como mejor opción.
Autor/a: David Rivero Orgaz
Curso: Microsoft MCSA Windows Server 2016 + Azure + AWS
Centro: Tajamar
Año académico: 2019-2020