Descubre cómo Docker transforma la gestión de servicios en un homelab, ofreciendo flexibilidad y facilidad para ejecutar más de 30 aplicaciones de manera eficiente y aislada.
Resumen
- Los contenedores de Docker son sistemas virtuales ligeros y autónomos para ejecutar servicios con un espacio y recursos mínimos.
- Docker simplifica la configuración, gestión, actualización y desinstalación de una variedad de servicios con facilidad.
- Ejecuto más de 30 servicios en mi homelab, que opera completamente en Docker, lo que demuestra cuán flexible es y su facilidad de uso.
Cuando se trata de homelabbing, hay muchos servicios y aplicaciones que podrías querer ejecutar. Aunque instalarlos individualmente es una opción, opté por el camino de Docker en su lugar, y no hay vuelta atrás.
¿Qué es exactamente Docker?
Si nunca has oído hablar de Docker antes, la forma más sencilla de pensar en él es que son un montón de sistemas virtuales ultra pequeños y ligeros que funcionan dentro de un mismo entorno.
Los "sistemas virtuales" de Docker se llaman contenedores, y cada uno contiene solo lo esencial del sistema operativo Linux necesario para que el servicio funcione.
Los contenedores ocupan muy pocos recursos y espacio en tu computadora. Esto te permite desplegar muchos servicios que están completamente aislados sin consumir muchos recursos. También significa que, cuando eliminas un servicio de Docker, se elimina por completo sin dejar trazas.
Todas las dependencias y todo desaparece cuando se elimina. Puede que quede un volumen pequeño, pero también es muy fácil podar volúmenes no utilizados.
Docker, yo te elijo
Hay muchas opciones disponibles cuando se trata de servicios en contenedores. Durante mucho tiempo, TrueNAS utilizó cárceles (aunque recientemente cambió a Docker), está Kubernetes, máquinas virtuales, contenedores LXC, y probablemente más. Docker es solo uno de muchos servicios. ¿Por qué lo elegí?
En mi opinión, Docker es simplemente el software de contenedorización más fácil de configurar y también es uno de los más robustos. Hay más de 10,000 contenedores de Docker en Docker Hub, y eso es solo un lugar para obtener aplicaciones. No importa qué quieras ejecutar, lo más probable es que haya un contenedor de Docker para ello.
Las cárceles son más limitadas en su función y disponibilidad. Kubernetes, aunque está basado en Docker y ejecuta contenedores de Docker, es más complicado de configurar para un entorno de homelab, ya que está más orientado al uso empresarial. Las máquinas virtuales son agradables y todo, pero es simplemente instalar software directamente en un sistema operativo, y no logra lo que quiero. Los contenedores LXC son muy similares a los contenedores de Docker, pero no son tan simples de gestionar como Docker.
Comencé a usar Docker en 2021 cuando configuré mi primer servidor Unraid. Era un requisito para mí incluso entonces, ya que estaba empezando a sumergirme en el mundo del homelabbing. Hasta el día de hoy, es un requisito en cualquier servidor que ejecute. Ya sea una máquina virtual Ubuntu o un NAS en bare-metal, debe tener capacidades de Docker.
Docker también es extremadamente fácil de usar y entender. Aunque he gestionado servidores web durante muchos años, instalar dependencias, configurar archivos JSON y tratar de depurar servicios nunca fue sencillo para mí. Desinstalar las cosas era aún más complejo la mitad del tiempo. Docker simplifica eso.
Me encanta lo fácil que es levantar un servicio en Docker, probarlo, evaluarlo y decidir si lo voy a mantener.
Justo el otro día, tenía Uptime-Kuma corriendo en mi host principal de Docker. Me gustó el servicio, pero quería ejecutarlo en una máquina que tiene mejor disponibilidad que mi instancia principal de Docker. Así que, simplemente levanté otro contenedor de Uptime-Kuma en otro host de Docker que tengo y, en minutos, estaba listo para empezar de nuevo.
Ejecuta más de 30 servicios, todos en Docker
Todo mi homelab funciona con Docker. Solo puedo pensar en un único servicio que no corre en Docker, y en realidad estoy considerando moverlo a un contenedor de Docker.
Una lista rápida de solo algunos de los servicios que ejecuto en mi homelab:
- AudioBookshelf
- Calibre
- Calibre-Web
- Home Assistant
- Immich
- Nginx Proxy Manager
- Plex
- Scrypted
- Pi-Hole
Estos son servicios que se ejecutan en mi instancia principal de Docker. También tengo Docker funcionando en mi Raspberry Pi, que maneja Uptime-Kuma y pronto ejecutará mi instancia de Pi-Hole de respaldo.
Tengo dos máquinas virtuales secundarias que ejecutan Docker. Estas VMs utilizan.
Ubuntu 24.04 como base y Docker como el host de contenedores. La razón por la que son dos máquinas virtuales separadas de mi VM principal de Docker es porque los servicios simplemente funcionan mejor cuando están separados en diferentes máquinas. Esas dos VMs ejecutan mi servidor de juegos Pterodactyl y el panel de gestión.
Docker Hace que el Homelabbing sea Sencillo
Ya sea que quieras entrar en el homelabbing o que ya lo estés haciendo, Docker es algo que realmente creo que todos deberían estar utilizando.
Si no has experimentado la vida de un homelab containerizado, te estás perdiendo de mucho. Docker es capaz de hacer tantas cosas, incluyendo incursionar en el reino de alta disponibilidad, algo que planeo explorar más adelante este año.
Tener todos tus servicios como contenedores auto-contenidos simplemente facilita su gestión. Ya sea actualizando un servicio y no otro, eliminando algo que ya no estás utilizando, o simplemente creando múltiples contenedores que se comunican entre sí pero están segregados de tu sistema operativo principal, Docker es la herramienta para el trabajo.
Mi homelab no podría funcionar como lo hace sin Docker. Creo que si le das una oportunidad, verás lo útil que es esta herramienta para tu configuración también.
¿Estás listo para sumergirte de lleno en los contenedores de Docker? Aquí hay 10 contenedores de Docker que creo que todos deberían ejecutar. Esta lista te ayudará a comenzar con algunos de los servicios básicos que ejecutan mi homelab a través de Docker, ¡y todos son bastante fáciles de implementar también!
Preguntas Frecuentes
¿Por qué no se recomienda Docker en Docker?
El uso de Docker en Docker (DinD) no se recomienda principalmente por motivos de seguridad y compatibilidad, entre otras razones:
- Conflictos de seguridad: El motor de Docker interno puede interferir con los Módulos de Seguridad de Linux (LSM), como AppArmor y SELinux, que protegen al sistema aplicando controles de acceso obligatorios.
- Aumento de la superficie de ataque: Configurar un contenedor Docker dentro de otro aumenta la complejidad, lo que puede crear vulnerabilidades adicionales y dificultar la gestión de la seguridad.
- Dificultades en la gestión de recursos: Ejecutar múltiples instancias de Docker puede complicar la gestión de recursos del host, reduciendo su eficiencia y rendimiento.
- Desafiando la portabilidad: Las configuraciones específicas pueden volverse más difíciles de replicar y desplazar, lo que contradice uno de los beneficios clave de Docker. En resumen, optar por DinD puede comprometer la seguridad, aumentar la complejidad y limitar la portabilidad, lo que lo convierte en una práctica desaconsejada.
¿Qué comando debes utilizar para conocer toda la información de un contenedor de Docker?
Para conocer toda la información de un contenedor de Docker, puedes utilizar el siguiente comando:
- -
docker ps -a
- : Este comando te permite ver todos los contenedores, incluyendo aquellos que están parados o han sido cancelados. ### Beneficios de usar
docker ps -a
- :
- Visualización completa: Muestra tanto los contenedores en ejecución como los que han sido detenidos.
- Detección de problemas: Ideal para identificar contenedores que se han detenido de forma imprevista.
- Referencia rápida: Proporciona un panorama general de todos tus contenedores, facilitando la gestión. Recuerda que para obtener información más detallada de un contenedor específico, puedes usar:
docker inspect [ID del contenedor]
: Proporciona información exhaustiva sobre el contenedor seleccionado.
¿Por qué utilizar Docker en lugar de VM?
Utilizar Docker en lugar de máquinas virtuales (VM) ofrece varias ventajas clave:
- -
Ligereza y eficiencia
- : Docker permite ejecutar múltiples contenedores en un solo sistema operativo sin la sobrecarga de un hipervisor, lo que reduce el uso de recursos.
- Portabilidad: Las aplicaciones empaquetadas en contenedores se pueden ejecutar de manera consistente en diferentes entornos, facilitando el desarrollo y la implementación.
- Inicio rápido: Los contenedores de Docker se inician casi de inmediato, mientras que las VMs pueden tardar varios minutos en arrancar debido a la carga del sistema operativo completo.
- Escalabilidad: Docker permite escalar aplicaciones rápidamente, ya que es fácil crear y destruir contenedores bajo demanda.
- Aislamiento: Aunque ambos tecnologías ofrecen aislamiento, los contenedores de Docker proporcionan un entorno más ágil y menos pesado, ideal para microservicios.
- Facilidad de gestión: Las herramientas de Docker simplifican la gestión de dependencias y la configuración, permitiendo un ciclo de vida más ágil en comparación con la administración de VMs. Adoptar Docker puede mejorar significativamente la eficiencia y agilidad en el desarrollo y despliegue de aplicaciones.
¿Es LXC mejor que Docker?
La comparación entre LXC y Docker depende de tus necesidades específicas. Aquí hay algunos puntos clave a considerar: Docker:
- - Enfoque en el desarrollo de aplicaciones.
- Ideal para implementar y escalar aplicaciones rápidamente.
- Ofrece una configuración mínima y facilidad de uso.
- Mejora la portabilidad entre entornos. LXC:
- Mejor alternativa para quienes buscan una ligera virtualización.
- Proporciona un mayor control sobre el sistema operativo y el hardware.
- Es adecuado para entornos que requieren gestiones más profundas del sistema. En resumen, si tu prioridad es el desarrollo y despliegue ágil de aplicaciones, Docker es la mejor opción. Si, en cambio, necesitas más control y recursos similares a los de una máquina virtual, LXC sería más adecuado.
Si deseas encontrar artículos similares a Cómo manejo todo mi homelab en Docker (y por qué tú también deberías hacerlo), te sugerimos revisar la categoría Tutoriales.
Deja una respuesta