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
Comenzado con docker
Prerrequisitos:
$ uname -r$ ls -l /sys/class/misc/device-mapper
$ sudo grep device-mapper /proc/devicesInstalació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/ | shDebian
Wheezy:
Jessie:
$ sudo apt-get update
$ sudo apt-get install docker.io
Probar si docker ha sido instalado
$ sudo docker infoInstalación
$ sudo yum -y install docker-ioRead Hat | Fedora | CentOS
RHEL 6, CentOS 6 y Fedora 20:
RHEL 7, CentOS 7 y Fedora 21:
$ sudo yum -y install dockerIniciar el demonio:
$ sudo systemctl start dockerCargar docker al iniciar el sistema
$ sudo systemctl enable dockerDocker 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, worldEl 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
Código fuente e imagen del taller
CONTÁCTANOS