¿Que es docker?

Javier Vivanco
3 min readOct 26, 2015

--

Docker es una plataforma para desarrolladores y sysadmins para el desarrollo, envío y ejecución de aplicaciones. Docker te permite rápidamente ensamblar aplicaciones desde componentes y eliminar la
fricción que existe cuando envías código. Docker te permite probar tu código y desplegarlo tan rápido como sea posible.

Docker consiste de las siguientes partes.

  • Docker engine: Un ligero y potente motor de virtualización de contenedores que combina el flujo de trabajado para la construcción y contención(containerizing) de tus aplicaciones.
  • Docker hub: Servicio para compartir imágenes y stack de aplicaciones

¿Que puedo hacer con eso?

  • Puedes estibar(dockerizing) tus aplicaciones
  • Puedes correr tu aplicación o servicio en un contenedor aislado
  • Puedes distribuir tu contenedor
  • Puedes construir tus propias imágenes y compartir
  • Puedes trabajar con tu infraestructura como una simple configuración.
  • Muchas cosas más

¿Que es un contenedor?

Un contenedor es un espacio donde se provee un entorno virtual que tiene su propio espacio de procesos y redes. Esto permite que puedas crear procesos, gestionar redes, usuarios, servicios, crear y borrar archivos independientemente del host.

Básicamente un Sistema Operativo entero en un espacio propio, basado en una imagen.

Si te se suena a maquina virtual sigue leyendo más abajo.

Docker permite correr aplicaciones dentro de un contenedor simplemente corriendo

docker run <imagen>

Liberándote de toda la compleja lógica del kernel de linux sin necesidad de usar LXC ( linux containers)

Una imagen de docker es una plantilla que sirve para crear un contenedor. Se construye a partir de una baseimage. Mediante un Dockerfile se puede reutilizar las imágenes para crear tu propias imágenes según las necesidades de tu aplicación.

Existen imágenes para casi todas las distribuciones linux más conocidas.

  • Ubuntu/Debian based
  • CentOS/Fedora/ RedHat based
  • etc…

Cada vez que corres un contenedor te basas en una imagen que previamente obtuviste de algún repositorio o que construiste. Tu contenedor correrá en su propio namespace en el kernel, con sus propios permisos, su propia red y sus propios usuarios.

Esto te permite que en menos de un segundo tengas ubuntu o centos corriendo, lo puedas configurar, por ejemplo, con mysql y puedas reutilizarlo las veces que quieras.

Ejemplos de ejecución

docker run -i -t ubuntu /bin/bash

Tendrás la ultima versión de ubuntu en menos de un segundo.

Diagrama de Docker

¿Es una maquina virtual?

No. Las maquinas virtuales(VM) corren sobre toda una plataforma de hardware virtualizada. Se virtualizan la memoria, cpu, disco, red, etc,etc. Esta virtualización consume recursos y añade gestión sobre algo que ya realiza bastante bien el kernel de linux.

Los contenedores corren en un espacio de nombre reservado por el kernel de host. El kernel de linux se encarga de gestionar procesos, memoria, usuario, etc, sin virtualizar el hardware. La contención(containerizing) de las aplicaciones es mucho más rápida que la virtualización de un sistema operativo entero.

¿Que ventajas tiene con respecto a una maquina virtual?

  • Agil y liviano. Puede Enviar un archivo Dockerfile por email con todos los requerimiento de tu aplicación o entorno.
  • Reutilizable. Puedes construir imágenes basando en imágenes anteriores.
  • Puedes manejar tu infraestructura como código. Versionarla, Desplegarla, Probarla
  • Unificadora: tiene el mismo entorno para desarrollo, pruebas y producción
  • Arquitectura fija, tu configuración o servicio cambia solo cuando cambias tu imagen.

Muchas de estas cosas pueden hacerse con VMs, por ejemplo con vagrant. Sin embargo no brindan la agilidad que tiene docker. Al abstraerse de toda la lógica de virtualización del hardware, no tiene que preocuparte por instalar una distro, ni realizar una snapshot para guardar una configuración.

Componente de docker

  • Docker Hub: Repositorio central de imágenes
  • Docker compose: Te permite definir componente de aplicaciones en un único archivo. Por ejemplo definir volúmenes, configuraciones, servidores. Gestionándolos desde un único punto de entrada
  • Docker registry: Repositorio para la gestión de imágenes. Puede gestionar tu propias imágenes privadas.
  • Docker machine: Te permite crear maquina con docker rápidamente, ya sea en tu host, o en la nube.
  • Docker swarm: Te permite gestionar multíplices instancia de docker(cluster) desde un único lugar.

Instalación

Por favor leer los requisito previos.

Kernel 3.10 Arquitectura 64bits

Instalar en:

--

--