Qué es Docker y cómo funciona, introducción a Docker

docker_containers

Docker es un software de código abierto que nos sirve para crear contenedores de software, que facilita la migración entre diferentes sistemas y garantiza el funcionamiento íntegro, evitando cualquier tipo de posible problema de dependencia entre versiones de software de los diferentes hosts.

Su funcionamiento ser basa en compartir un único sistema operativo en la máquina que lo hospeda y en compartir bibliotecas entre contenedores:

docker_vm_vs_contenedores

Qué es un contenedor o container en Docker?

Es un empaquetado de un programa o sofware, como pueden ser bases de datos, páginas web, programas phyton o cualquier otro tipo de software que optimiza el espacio ocupado y facilita la migración entre diferentes servidores.

En un mismo contenedor puede haber múltiples softwares, como por ejemplo php+nginx+mysql.

docker_containers

Propiedades de Docker.

  • Aplicaciones libres de dependencias de programas y versiones allá donde las instalemos.
  • Capacidad para desplegar múltiples contenedores en un mismo sistema.
  • Compatibilidad entre diferentes sistemas, incluidos de Linux a Windows.
  • Posibilidad de compartir y usar contenedores públicos de la comunidad Docker.

Qué es Docker hub?

Es un repositorio de imágenes de contenedores docker donde se puede compartir con la comunidad los diferentes contenedores que la comunidad ha publicado.

https://hub.docker.com/

Cuando es recomendable usar Docker?

Siempre que queramos simplificar el despliegue de aplicaciones.

Evita conflictos entre programas y sistemas.

Mejora la consistencia entre entornos de desarrollo y de producción.

Ventajas de usar Docker:

  • Ahorro de costes de infraestructura.
  • Mayor productividad
  • Mayor Compatibilidad
  • Mayor seguridad
  • Mayor seguridad por el aislamiento entre contenedores

Ventajas de Docker vs máquina virtual:

No necesitamos un sistema operativo para cada una de nuestras aplicaciones. Como consecuencia liberamos todos los recursos que ocuparían cada una de las máquinas virtuales.

Optimización del espacio en disco al no tener que guardar cada sistema en una máquina virtual. Si hay algun contenedor que comparte programas con otros contenedores, no hace falta que estén los datos en cada contenedor, docker comparte ésta información.

  1. Mayor velocidad en los arranques.
  2. Mayor portabilidad.
  3. Mayor inmutabilidad.
  4. Mayor seguridad.