Sesión 3.1. Manual de contenedores y Docker
(24 / Agosto 2018 )
En la sesión III inciso I se construye un manual de contenedores y Docker. Se recomienda leer la sesión III de un post anterior. La información presentada fue recopilada de las lecciones recibidas en la MCIC (Maestría de Ciencias de la Información y las Comunicaciones) de la Universidad Distrital en Bogotá-Colombia y de investigaciones adicionales.
CONTENEDORES
¿Qué es?
¿Para qué sirve?
El concepto de contenedores presenta el siguiente enfoque:Cada aplicación es entregada junto con sus dependencias necesarias para su funcionamiento, pero sin incluir el sistema operativo. De manera que las aplicaciones se conectan directamente con el sistema operativo anfitrión (host), por lo tanto no existe ninguna capa adicional del sistema operativo invitado (guest). Esto resulta en un mejor desempeño y no se desperdician recursos. (Leszko, 2017).
Los contenedores resuelven un número de problemas que enfrentaba el despliegue y entrega de productos de software en los modelos tradicionales.
- Ambiente de desarrollo. Soluciona problemas relacionados con el ambiente de producción como las instalaciones de dependencias.
- Aislamiento. Mantiene las aplicaciones separadas lo que impide daños en optros contenedores por software malicioso.
- Organización de aplicaciones.
- Portabilidad. “write once, run anywhere”.
¿Cuales herramientas existen?
La herramienta más utilizada en contenedores es Docker, qué es un proyecto open source diseñado para el despliegue de aplicaciones usando contenedores de software.En la definición obtenida de la página de Docker se tiene:
"Los contenedores en Docker agrupan una pieza de software en un sistema de archivos completo que contiene todo lo necesario para ejecutarse: código, tiempo de ejecución, herramientas del sistema, librerias del sistema - todo lo que pueda ser instalado en el servidor, Esto garantiza que el software siempre se ejecute, independientemente del ambiente de desarrollo o producción." (Leszko, 2017)
Docker permite empaquetar una aplicación dentro de una imagen que puede ser ejecutada en cualquier lugar
Alternativas a Docker
Docker no es el único sistema de contenedores disponibles en el mercado. De hecho las primeras versiones de Docker fueron basadas en el sistema libre (LXC Linux Containers), qué es otra alternativa para los contenedores.
Existen otras soluciones como:
- FreeBSD Jails.
- Open VZ.
- Solaris Containers.
¿Cómo se configuran?
Centrando la atención en Docker, se tiene el siguiente diagrama, que explica su funcionamiento:Una aplicación “dockerizada” como un web service se ejecuta sobre un “Docker Host” y es alcanzado y ejecutado directamente en la máquina anfitriona. Esto es posible gracias al “port Forwarding”.
Instalación Docker
“Docker puede ser instalado de forma nativa en MAC, Windows o Linux, sin embargo es importante entender que está basado en Linux Kernel.Prerequisitos:
Mac: 2010 o un modelo nuevo, con soporte de hadware de Intel para la configuración de las unidades de memoria (MMU) virtualización.
macOS 10.10.3 Yosemite o mayor
Al menos 4GB de RAM
No tener VirtualBox instalado prevío a la versión 4.3.30
Windows:
64-bit Windows 10 Pro
El paquete de Hyper-V habilitado
Linux:
64-bit
Linux kernel 3.10 o mayor
Instalación en Linux (Ubuntu):
Docker puede ser instalado desde el repositorio:
$ sudo apt-get update
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recvkeys
9DC858229FC7DD38854AE2D88D81803C0EBFCD88
$ sudo apt-add-repository 'deb [arch=amd64]
https://download.docker.com/linux/ubuntu xenial main stable'
$ sudo apt-get update
$ sudo apt-get install -y docker-ce
Una vez instalado, se habilitan los usuarios en docker group
$ sudo usermod -aG docker <username>
¿Cómo se lanzan imagenes?
Para comprobar su instalación se lanza el programa de prueba:
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
78445dd45222: Pull complete
Digest:
sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
...
Referencias
Leszko, R. (2017). Continuous delivery with Docker and Jenkins: Delivering software at scale. Birmingham ; Mumbai: Packt Publishing.