¿Qué es Docker?
Antes de Docker, las empresas de software enfrentaban el desafío de gestionar diversas tecnologías y sus múltiples versiones, además de cambiar constantemente de versiones entre proyectos. Si se incorporaba un nuevo programador al equipo, este debía instalar todo el entorno de desarrollo necesario para trabajar en dichos proyectos, lo cual consumía mucho tiempo, un recurso del que generalmente carecemos.
¿Y si pudiéramos tener un entorno de desarrollo completo en cuestión de segundos? ¿Y si cambiar a otro proyecto fuera tan rápido como ejecutar un simple comando? ¿Podríamos replicar el entorno de producción? Estas son algunas de las ventajas que Docker ofrece a los programadores hoy en día.
¿Por qué es tan importante para nosotros?
En Btscomet trabajamos diariamente en múltiples proyectos que utilizan tecnologías como Laravel, Angular, Vuejs, Ionic y Node.js. A veces, estos proyectos requieren diferentes versiones, por lo que una herramienta como Docker es indispensable.
Pero, ¿qué son los contenedores?
Docker nos permite crear rápidamente un contenedor completamente aislado de nuestro sistema operativo, un auténtico entorno de pruebas "sandbox" que nos permite probar cualquier software sin interferir con nuestro equipo. ¿Es una máquina virtual? No exactamente, ya que compartimos algunos recursos del sistema operativo de la máquina anfitrión, lo que nos permite levantar estos entornos mucho más rápido que con una máquina virtual. Con Docker, no necesitamos arrancar un nuevo kernel, sistema operativo o simulación de hardware.
Para lograr esto, Docker utiliza tecnologías de Linux llamadas cgroups y namespaces, por lo que cualquier proceso que se ejecute en un contenedor se ejecutará realmente en nuestra máquina, pero sin afectar a esta en ningún momento.
Para más información, consulta la documentación oficial.