Virtualización ligera para desarrolladores y administradores de sistemas

Por: Carlos Cárcamo

https://github.com/carloscarcamo

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:

 

  • PC 64bits 
  • Kernel 3.8+
  • Driver de almanecamiento
    • Device Mapper
    • AUFS
    • vfs
    • btrfs

 

$ uname -r
$ ls -l /sys/class/misc/device-mapper
$ sudo grep device-mapper /proc/devices

Instalación

Instalar el kernel desde  wheezy-backports

$ sudo echo "deb http://http.debian.net/debian wheezy-backports main" >>
$ sudo apt-get update
$ sudo apt-get install -t wheezy-backports linux-image-amd64

Reiniciar e instalar docker:

$ sudo curl -sSL https://get.docker.com/ | sh

​Debian

    Wheezy:    

    Jessie:    

$ sudo apt-get update
$ sudo apt-get install docker.io
Probar si docker ha sido instalado

$ sudo docker info

Instalación

$ sudo yum -y install docker-io

Read Hat | Fedora | CentOS

    RHEL 6, CentOS 6 y Fedora 20:

     RHEL 7, CentOS 7 y Fedora 21:

$ sudo yum -y install docker

Iniciar el demonio:

$ sudo systemctl start docker

Cargar docker al iniciar el sistema

$ sudo systemctl enable docker

Docker hub

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

  * 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:

$ sudo docker login

"Hello, world" con Docker

$ sudo docker run fedora:21 /bin/echo 'hello, world'
hello, world

El comando 'docker run' permite ejecutar comandos en un contenedor, la sintaxis de este comando es la siguiente;

 docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Las opciones disponibles se pueden consultar ejecutando:

  docker run --help

Lo que mostrará todas las opciones disponibles para el comando 'run'.

En el ejemplo anterior le decimos a docker que ejecute el comando /bin/echo 'hello, world' en la imagen seleccionada (fedora:21), si la imagen no existe, docker descargara la imagen correspondiente.

Usando un contenedor interactivo

$ sudo docker run -t -i fedora:21 /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/

Código fuente e imagen del taller

CONTÁCTANOS

Made with Slides.com