Docker es la herramienta encargada de realizar contenedores y Ansible es la encargada de manejar esos contenedores.
Podemos usar Docker y Ansible de forma separada pero también podemos combinarlas para beneficiarnos de las propiedades de cada una. En Ansible disponemos de dos módulos que nos permite manejar las imágenes y los contenedores de Docker, estos son docker y docker_image.
Usando tareas de ansible podemos automatizar el arranque del servicio de docker, la construcción de las imágenes con los Dokerfile y el inicio o parada de los contenedores de docker.
En primer lugar, vamos a realizar la instalación de Docker.
Para instalar Docker en Ubuntu, en este caso en 14.04LTS vamos a seguir los siguientes pasos:
En primer lugar, debemos actualizar el kernel a la última versión con la siguiente orden:
sudo apt-get install linux-image-generic-lts-raring linux-headers-generic-lts-raring
Reiniciamos el sistema para que tome los cambios:
sudo reboot
Comprobamos que está actualizado en la última versión con:
uname -a
Ahora agregamos el repositorio Docker:
sudo sh -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
Añadimos la llave pública que verifica el repositorio:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys D8576A8BA88D21E9
Actualizamos la lista de fuentes:
sudo apt-get update
Instalamos el paquete Docker:
sudo apt-get install lxc-docker
Verificamos que Docker ha sido instalado:
docker -v
Vamos a crear nuestro primer contenedor con Docker, en este caso va a ser una imagen Ubuntu.
Para empezar, una vez instalado, tenemos que lanzar el servicio Docker:
sudo docker -d &
Y ahora procedemos a la instalación de nuestra primera imagen:
sudo docker pull ubuntu
Al finalizar la instalación veremos lo siguiente:
ubuntu:latest: The image you are pulling has been verified 511136ea3c5a: Pull complete 5bc37dc2dfba: Pull complete 61cb619d86bc: Pull complete 3f45ca85fedc: Pull complete 78e82ee876a2: Pull complete dc07507cef42: Pull complete 86ce37374f40: Pull complete Status: Downloaded newer image for ubuntu:latest
Ahora si queremos listar nuestros contenedores instalados:
sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f11355edfe16 ubuntu:latest "/bin/bash" 5 minutes ago
Si queremos acceder a el:
sudo docker run -i -t ubuntu
O en caso de que queramos ejecutarlo:
sudo docker start -a f11355edfe16
Para nuestra aplicación, más concretamente para el entorno de pruebas, se han añadido los siguientes scripts, para que la anterior instalación sea automatizada.
El primer script va a actualizar el kernel. Este no puede incluirse en el de instalación Docker ya que esta actualización necesita un reinicio del sistema.
#!/bin/bash #Actualización Kernel necesaria para poder ejecutar Docker apt-get --assume-yes install linux-image-generic-lts-raring linux-headers-generic-lts-raring reboot
El siguiente script va a realizar la instalación de Docker.
#!/bin/bash #Script para instalar Docker #Añadir repositorio. sudo sh -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list" #Añadir la llave pública que verifica el repositorio (el repositorio no está verificado por defecto, omitir este paso #rompería la instalación desatendida, por no hablar del fallo de seguridad) sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys D8576A8BA88D21E9 #Actualizacion de la lista de repositorios sudo apt-get update #Instalación de Docker sudo apt-get --assume-yes install lxc-docker #Activar demonio de Docker sudo docker -d & #Instalación de Ubuntu sudo docker pull ubuntu #Creación de la imagen de pruebas sudo docker build -t "pruebas" - < recurso_pruebas.tar.gz #Ejecución de la imagen de pruebas sudo docker run -i pruebas
A continuación vamos a ver el Dockerfile, que va a instalar Ansible y nuestro entorno LDT (LDT.sh), el cual podremos descargar desde nuestro repositorio.
############################################################# # Dockerfile para instalar ansible y ejecutar menú LDT # Basado en Ubuntu ############################################################# FROM ubuntu:latest MAINTAINER JuanAFernandez juanantc mortega87 rubenadrados JA-Gonz #Instalar ansible RUN apt-get update RUN apt-get install -y ansible #Ejecutar menú LDT ADD ./LDT.sh /LDT.sh CMD ["/bin/bash", "/LDT.sh"]