https://fotosycaptura.cl

Bitácora personal del capitán @fotosycaptura ✨

Guía casi completa XD: Instalando y configurando docker


¿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...