Docker es una plataforma para desarrolladores y administradores de sistemas se usa para desarrollar, cargar y ejecutar aplicaciones, es un motor que automatiza el despliegue de aplicaciones en contenedores.

 

Docker es Open Source y esta bajo licencia Apache v2.0 por Docker Inc. que además es compatible con GPLv3.

¿Que es Docker?

Contenedores linux

Con docker podemos virtualizar un sistema Linux con todo lo necesario para trabajar sobre el, luego podemos empaquetarlo y desplegarlo para que pueda ser usado en otro sistema operativo con solo ejecutar un par de comandos.

Cada contenedor podría definirse como una maquina virtual ligera. Estas "maquinas virtuales" consumirán menos recursos en el sistema anfitrión comparado con las maquinas virtuales tradicionales.

Cabe mencionar que los contenedores Linux no son nuevos, de hecho existen desde hace mucho tiempo. Docker usa y extiende a LXC (LinuX Containers) para lograr su fluidez.

Docker vs Maquinas virtuales

Caracteristicas de Docker

  • Portabilidad: Puede desplegarse en cualquier otro sistema (que soporte docker por supuesto). Podemos crear imágenes personalizadas que nos ahorran la necesidad de instalar un sistema nuevo.
  • Ligereza: El tamaño del sistema es reducido comparado con otros sistemas de virtualización como virtualbox.
  • No necesita hipervisor: puedes empaquetar varios contenedores y usarlos en tu sistema, esto puede reducir los costos a la hora de invertir en servidores, pues realmente ocupan menos recursos.
  • Despliegue rápido para fácil administración: Si eres un desarrollador, docker puede ayudar a mejorar tu flujo de trabajo, puedes usar docker para crear un entorno de desarrollo que se ajuste a tus necesidades y las de tu equipo de trabajo. 
    Si eres Sysadmin, docker puede ayudarte a mejorar la administración de tus servidores, puedes separar servicios como un servidor web, base de datos, etc. En contenedores separados.

Comenzado con docker

Prerrequisitos:

 

$ uname -r

Instalación

​Debian

$ apt-get update

Actualizar repositorios

$ apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

Agregar gpg key

Abrir o crear el archivo

/etc/apt/sources.list.d/docker.list
deb https://apt.dockerproject.org/repo debian-wheezy main

Agregar lo siguiente:

Debian wheezy

deb https://apt.dockerproject.org/repo debian-wheezy main

Debian jessie

$ sudo apt-get update

Actualizar

$ sudo apt-get install docker-engine

Instalar

$ sudo service docker start

Iniciar el servicio

$ sudo docker run -t debian echo "Docker El Salvador"

Hello world, Docker

Docker hub

Docker hub es la fuente central para trabajar con docker, provee servicios como:

$ sudo docker login

* Hosting para imagen es docker

* Autenticación de usuarios

* Automatización de creación de imagenes y herramientas para el flujo de trabajo.

* Integración con github y bitbucket.

Crear una cuenta en https://hub.docker.com/account/signup/

Luego iniciar sesion desde la consola:

Usando un contenedor interactivo

$ sudo docker run -t -i debian /bin/bash
bash-4.3# 

La opción -t asigna una terminal al contenedor, la opción -i permite crear una conexión interactiva.

 

Ahora estamos dentro del contenedor, podemos ejecutar comandos como lo hacemos en cualquier otra distro que usamos:

bash-4.3# $ ls
bin  boot  dev	etc  home  lib	lib64  lost+found  media  mnt  opt  proc  root	run ...

Para salir del contenedor unicamente digitamos exit y damos enter:

 

$ bash-4.3# exit
exit
user@pc$

Comandos Básicos

Listar Contenedores

$ sudo docker ps

Ver logs

$ sudo docker logs <conteiner ID or name>

Iniciar un contenedor

$ sudo docker start <conteiner ID or name>

Detener un contenedor

$ sudo docker stop <conteiner ID or name>

Ayuda e información sobre comandos

$ sudo docker <comando> --help

Descargar una imagen de docker hub

$ docker pull <nombre de la imagen>

Buscar imagenes en docker hub

$ docker search <nombre a buscar>







Algunos de los comandos mas usados en docker

Descargar una imagen de docker hub

$ sudo docker pull <imagen>

Enviar una imagen a docker hub

$ sudo docker push <usuario>/nombre_imagen

Quitar imagenes del host

$ sudo docker rmi training/sinatra

Crear un demonio de una imagen

$ sudo docker run -p <puerto_salida>:<puerto de salida de la app> -d <imagen>

Que más hay

  • https://docs.docker.com/userguide/
  • http://progrium.viewdocs.io/dokku/index
  • https://coreos.com/
  • http://deis.io/

DEMO

CONTÁCTANOS

Dockerizando web apps

By Carlos Eduardo Cárcamo Mendoza