Una de los avances más modernos que nos darán la oportunidad de escalar nuestros equipos a niveles antes no pensados es Docker, mucho hemos hablado acerca de Docker y de los contenedores pero realmente no sabemos a fondo como usarlo ni cómo implementarlo en nuestras distribuciones de Linux, y realmente estamos perdiendo la oportunidad de aumentar las capacidades de nuestra infraestructura y de paso tener la oportunidad de realizar una administración mucho más centralizada de nuestro rol como personal IT.
Solvetic hará un análisis completo acerca de cómo instalar y usar Docker en Ubuntu 17 y vamos a ver que, aparte de lo simple que es, la oportunidad de lograr mayores niveles de alcance dentro de la organización se aumentará sin mucho esfuerzo y sin usar más recursos de los disponibles.
El centro de todo Docker son los contenedores, donde una imagen de contenedor es un paquete ligero, independiente y ejecutable en el cual se incluye todo lo necesario para ejecutarlo:
- Código
- Tiempo de ejecución
- Herramientas del sistema
- Bibliotecas del sistema y configuraciones.
Estos contenedores los encontramos disponibles para aplicaciones basadas en Linux y Windows, donde el software almacenado en el contenedor siempre funcionará igual, independientemente del entorno ya que los contenedores creados se encargan de aislar el software del entorno lo cual crea menos conflictos y se trabaja de manera independiente.
El uso de contenedores en ambientes Linux, enfocado el día de hoy, son usados para implementar aplicaciones y esta tarea se denomina contenedorización.
- Flexible: Los contenedores están en la capacidad de alojar aplicaciones complejas.
- Ligero: Los contenedores aprovechan y comparten el kernel de host aumentando su eficiencia.
- Intercambiable: Al implementar un contenedor será posible implementar actualizaciones en tiempo real.
- Portátil: Gracias a los contenedores es posible construir imágenes de forma local, implementar en la nube y ejecutar en cualquier lugar lo cual es útil cuando debemos realizar tareas en sitios diferentes.
- Escalable: Un contenedor puede aumentar y distribuir automáticamente réplicas de contenedores lo cual añade más niveles de administración en la organización.
- Apilable: Un contenedor puede apilar servicios verticalmente y en tiempo real.
Un contenedor se inicia ejecutando una imagen, donde una imagen es un paquete ejecutable en el cual se incluye todo lo necesario para ejecutar una aplicación como lo hemos mencionado anteriormente. Un contenedor es una instancia de tiempo de ejecución de una imagen específica, es decir, la imagen se convierte en memoria cuando es ejecutada.
Al trabajar con los contenedores existen una serie de conceptos que debemos conocer y familiarizarnos con ellos ya que serán frecuentes en el día a día con el trabajo de este tipo, estos son:
Con estos conceptos claros vamos a ver como instalar y crear un contenedor en Ubuntu 17.10.
1. Verificar el Sistema Operativo Ubuntu
Antes de instalar Docker en Ubuntu, es ideal verificar la versión del kernel y la arquitectura del sistema operativo actual, para esto, vamos a ejecutar los siguientes como usuario root.
Aunque podemos usar sudo antes de cada comando, es práctico ejecutar este comando para establecer el usuario root en Ubuntu:
sudo -s
Allí ingresamos nuestra contraseña y podremos ejecutar todos los comandos como root.
Ahora, comprobaremos la versión de kernel de Ubuntu 17 ejecutando lo siguiente:
uname -a
Finalmente, vamos a verificar la versión de Ubuntu con la ejecución del siguiente comando:
cat /etc/lsb-release
Podemos ver detalles específicos de Ubuntu 17.10. Una vez tengamos esto definido, procedemos a actualizar todos los paquetes del sistema operativo con la ejecución de las siguientes líneas:
apt update apt upgrade
2. Instalar Docker en Ubuntu Linux
Una vez el sistema operativo se encuentre actualizado, vamos a instalar Docker haciendo uso del siguiente comando:
apt install -y docker.io
Allí podremos ver que inicia el proceso de descarga de Docker en Ubuntu el cual posteriormente será instalado automáticamente:
Una vez Docker ha sido instalado, vamos a iniciarlo usando la siguiente línea:
systemctl start Docker
Habilitamos Docker para que sea ejecutado en el arranque del Ubuntu:
systemctl enable docker
Si deseamos conocer la versión de Docker que ha sido instalada vamos a ejecutar lo siguiente. Allí encontramos la versión tanto del cliente como del servidor.
docker version
3. Usar Docker en Ubuntu Linux
Para crear un contenedor nuevo, vamos a seleccionar una imagen base con el sistema operativo, es decir, seleccionamos Ubuntu, CentOS, Fedora, etc.
Esto lo podemos buscar haciendo uso del comando de búsqueda de la siguiente forma:
docker search “Imagen”
Por ejemplo, para buscar todas las imágenes de Ubuntu ejecutamos:
docker search Ubuntu
El resultado obtenido será el siguiente:
Ahora vamos a descargar la imagen base a nuestro equipo haciendo uso del siguiente comando:
docker pull Ubuntu
Allí podemos ver que será descargará una imagen a nuestro servidor desde DockerHub. Una vez la descarga concluya veremos lo siguiente:
Para ver las imágenes descargadas vamos a ejecutar lo siguiente:
docker images
Allí encontramos detalles como:
- Nombre de la imagen
- ID de la imagen
- Fecha de creación
- Tamaño de la imagen
La imagen seleccionada, de Ubuntu, se descargó del Registro DockerHub y ahora es momento de crear un contenedor a partir de esta imagen, para ello vamos a ejecutar lo siguiente usando docker create o docker run:
docker create ubuntu:17.04
Una vez este proceso finalice veremos lo siguiente:
El comando docker create se encargará de crear un nuevo contenedor pero no lo iniciará. Para su inicio, vamos a usar el comando de ejecución así:
docker run -i -t ubuntu:17.04 /bin/bash
El contenedor se detendrá cuando usemos el comando exit, si el objetivo es contar con un contenedor que sea ejecutado en segundo plano, debemos agregar la opción -d en el comando así:
docker run -i -t -d ubuntu:17.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
bin / sh -c "while true; echo eco hello world; sleep 1; done"Es script bash que permite repetir "hello world" de forma continua pero lógicamente no es necesario.
Podremos ver el contenedor que está siendo ejecutado en segundo plano ejecutando lo siguiente:
docker ps
Como vemos, se emiten detalles como:
- IP del contenedor
- Nombre de la imagen
- Comando usado
- Fecha de creación
- Estado
En caso de desear ver los eventos de la imagen ejecutaremos la siguiente sintaxis:
docker logs ContainerID
Si deseamos conectarnos al contenedor creado, vamos a usar la siguiente sintaxis:
docker exec -i -t ContainerID /bin/bash
Una vez allí podremos ejecutar múltiples comandos:
Podemos ver que el nombre de host y el ID del contenedor son iguales, esto indica que estamos dentro del contenedor. Al escribir exit en ese shell, saldremos de ese shell pero el contenedor aún se está ejecutando en segundo plano. Otras acciones para realizar con el contenedor son:
docker stop ContainerID
docker start ContainerID
docker rm ContainerID
Podemos ver cómo es de simple contar con uno o más contenedores en Ubuntu y así escalar a un nivel más alto de configuración nuestro sistema.