- ma., 01 octubre
- Laboratorio
- @fotosycaptura
- #blog, #docker, #contenedor, #laboratorio
¿Qué es docker?
Docker es una plataforma que permite automatizar el despliegue de aplicaciones en contenedores. Los contenedores son entornos ligeros y portátiles que contienen todo lo necesario para ejecutar una aplicación, como el código, las bibliotecas y las dependencias necesarias.
Las ventajas que posee, si te dedicas por ejemplo al desarrollo, son varias: portabilidad, aislamiento, facilidad de despliegue, son algunas de sus ventajas...
Instalando docker
Lo primero será instalar docker en tu distribución de Linux. Dependiendo de la distro que uses puede que varíe un poco las sentencias, pero por ejemplo en mi caso al usar arch:
sudo pacman -Syu docker docker-compose containerd
Agregando el usuario al grupo docker
Para que funcione de forma correcta lo que tendrás que hacer será lo siguiente:
sudo usermod -aG docker USUARIO
Donde USUARIO será tu usuario. Luego deberás crear el grupo con:
newgrp docker
Podrás comprobar si todo está ben con el comando groups en la terminal.
También puedes corroborarlo con
cat /etc/group | grep docker
Levantando el servicio
Una vez que haya finalizado, lo siguiente será iniciar el servicio a demanda o dejarlo habilitado para que se ejecute de forma permanente, bueno, esto dependerá de como lo quieras manejar. En mi caso, basta con hacer un:
sudo systemctl start docker.service
Con esto, el servicio se estará ejecutando y podrás consultar su estado mediante:
sudo systemctl status docker.service
Nuestro primer contenedor
Supongamos que tengo un pequeño sitio web como por ejemplo el de https://secpo.cl. El sitio Web en cuestión, es un sitio de contenido estático. Para el ejemplo es perfecto.
Entonces, iremos a nuestro directorio de desarrollo o de pruebas, o el que tengas. Y crearás un directorio que contendrá el sitio web así como el archivo docker-compose.yml.
Para ello, habrá que crear el mentado archivo docker-compose.yml
Bastará con que ejecutes tu editor de texto favorito en la terminal, en mi caso vim, seguido del nombre del archivo, así:
vim docker-compose.yml
Tienes que pensar, que la estructura de directorios final deberá quedar algo similar a esto:
├── docker-compose.yml
├── web
└── index.html # Si tienes uno personalizado
└── css/ # Resto de archivos css, y así...
Bueno, el archivo docker-compose deberá tener algo como esto:
services:
web:
image: nginx:latest
container_name: secpo-cn
environment:
NGINX_HOST: secpo.cl
NGINX_PORT: 80
volumes:
- ./web:/usr/share/nginx/html
ports:
- "80:80" # Puedes cambiar el primer puerto más a la izquierda, por ejemplo 8080:80
restart: always
Debes de ser bien cuidadoso en lo que a identación respecta. Docker es bien riguroso en este aspecto.
En el caso del 8080:80, el primer puerto (8080), será el puerto que se podrá visualizar desde el equipo anfitrión.
Una vez completado, solo quedará guardar todo y salir del editor vim.
Ejecutando el contenedor
Si todo ha ido bien, ya solo quedará realizar lo siguiente desde la terminal:
docker compose up
Si deseas lanzarlo de manera que quede ejecutándose aún si presionas control+c o sales de la terminal, deberás agregar el parámetro -d.
¿El contenedor está ejecutándose?
Eso se puede observar mediante la ejecución de:
docker ps
Si quisieras detener el contendor, nada mejor que:
docker stop ID
Donde ID será el hash raro que se suele observar al utilizar docker ps
Si no has usado el parámetro -d, será entonces solo cosa de usar las teclas control+c en la terminal donde se encuentra ejecutándose el contenedor.
Si quieres acceder al contenedor para cambiar alguna configuración en caso de que algo no haya salido como quieres, puedes ingresar mediante:
docker exec -it NOMBRE_O_ID /bin/bash
Donde el NOMBRE_O_ID corresponderá al hash o al nombre si es que lo has nombrado.
Si tienes demasiados contenedores, puedes detenerlos todos usando:
docker stop $(docker ps -aq)
Bueno, eliminar tanto contenedores como imagenes es sencillo también.
docker rm NOMBRE_O_ID
Si lo que deseas, es eliminar una imagen, entonces deberás usar:
docker rmi NOMBRE_O_ID
Ojo que siempre tienes que estar seguro de lo que haces, y de que el contenedor esté detenido, de lo contrario, ya sabes...
Conclusión
Bueno, como has visto, todos estos comandos te permiten gestionar y desplegar aplicaciones de manera rápida. Siguiendo esta guía, has aprendido (o quizás no XD), cómo configurar un entorno completo, aunque sea un sitio Web simple. Lo siguiente será experimentar con mysql, sitios más complejos... En fin... Tienes harto por investigar joven padawan... XDD
Pero en serio, creo que está todo lo básico para comenzar y experimentar...