Servicios con docker - Preparando el entorno
En este artículo paso a detallar instalaciones y configuraciones previas a la instalación de servicios en docker.
Consideraciones previas
Iré directamente a instalaciones y configuraciones, si alguien llega hasta acá sin saber de qué se trata docker, puede aprovechar el gran trabajo de Atareao, del cual he aprendido bastantes cosas.
El sistema operativo elegido es Debian (versión 12 para esta documentación) por ser lo suficientemente estable y universal para que lo tengan la mayoría de los proveedores de servidores, aunque en lo particular elegiría Devuan si pudiese, mi distro de cabecera.
Instalación de docker y docker compose
- Documentación oficial de referencia
Pre-instalación
NOTA: salvo cuando se especifique, todos los comandos se ejecutan con root, lo cual en debian se usa ingresando con su -
1. Actualizar sistema e instalar paquetes necesarios:
apt update
apt install ca-certificates curl
2. Agregar repositorio de docker y sus llaves de autenticación
NOTA: la ejecución de los comandos de este punto (el 2) no deberían devolver nada, sólo volver al prompt de la consola, salvo que dé algún error
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update
Instalación y prueba
1. Instalación
apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
2. Agregar usuario sin privilegios al grupo docker
NOTA: donde dice USERNAME, cambiarlo por el usuario sin privilegios del sistema
groupadd docker
usermod -aG docker USERNAME
3. Para probar que funciona, cerrar esa sesión de terminal y volver a ingresar con el usuario USERNAME para que tome los cambios y ejecutar el siguiente comando
docker run hello-world
Debería devolver un mensaje que finalizó con éxito
Finalización
En este punto ya están el sistema y docker preparados para empezar a levantar los contenedores de base (Nginx Proxy Manager y Portainer) y así tener un entorno cómodo de instalación y manejo de servicios más adelante.