TechTips para Startups.

“TechTips” para Startups #1: Arrancar Jenkins con Docker

“TechTips” para Startups #1: Arrancar Jenkins con Docker

TechTips para Startups.
TechTips para Startups.

El ritmo frenético que requiere las Startups puede afectar también al equipo de desarrollo de productos por lo que normalmente resultar complicado estar actualizado e informado de las nuevas tendencias que aparecen en el sector. En este artículo os explicaré cómo agilizar tareas de DevOps con Docker para tu startup.

Este software de virtualización es realmente útil para desarrollar proyectos de Startups, pues permite sincronizar las configuraciones, encapsular aplicaciones, minimizamos los recursos asignados a nuestras virtualizaciones y, de esta manera, ahorrar costes en servidores. Docker es realmente efectivo para incrementar la eficiencia de los equipos, pues permite ejecutar automáticamente en segundos acciones que de otra sin este podría tardar horas.

Qué es Docker.

Docker es un programa abierto de codificar que permite virtualizar a nivel de sistema operativo. Cuando te encuentras por primera vez con Docker parece un espacio de máquinas virtuales ligeras, pero este software está completamente alejado de esta definición.  En realidad, Docker no virtualiza hardware sino que utiliza las funciones del Kernel para encapsular un sistema en un contenedor. Se crea de tal manera que la aplicación corre dentro del contenedor sin saber que está dentro de uno. Además, los contendores están aislados entre sí y pueden limitar los recursos utilizados (CPU, RAM, Disco, etc.).

Una de las mayores diferencias con una máquina virtual es que esta levanta un sistema operativo completo y ejecuta todos sus procesos. Esto se traduce en un impacto elevado en recursos y tiempo, pues tener sistema operativo requiere disponer de unos recursos mínimos necesarios para su funcionamiento, sumado a la aplicación que se está ejecutando.

Por otro lado, si se realiza con Docker, solo se requieren los recursos necesarios de la aplicación contenida en un contenedor. Por lo que este sistema solo tarda unos segundos en arrancar pues no es necesario arrancar el sistema operativo completo.

La segunda mayor ventaja de Docker está relacionada con el sistema de imágenes, ya que un contenedor es solo una imagen en ejecución a la que se le asignan recursos. Estas imágenes están creadas por capas de lectura exclusivamente y solamente el contenedor está arrancando añade la capa superior de escritura. Esto permite tener una sola capa superior por muchas veces que se ejecute la aplicación y solamente son las capas de escrituras las que se crean en cada ejecución, y sucede lo mismo con los contenedores que comparten recursos.

Las imágenes son más ligeras pues tienen el contenido mínimo necesario para ejecutar una aplicación, no son necesarias librerías ejecutables. Y, por si esto fuera poco, la configuración de las imágenes es fácilmente sincronizable para volverla a levantar en otra máquina en unos pocos minutos sin modificar la configuración ni la lista necesaria para funcionar.

Empezar con Docker.

Así pues, una vez definido Docker, es el momento de ver cuál es la utilidad real para una Startup. En este caso os enseñaré a crear un contenedor de Jenkins, un software de Integración continua. Para ello solo deberemos seguir 5 pasos sencillo para empezar a usar Docker.

1. El primer punto será, como es lógico, la instalación de Docker en la máquina. En el siguiente enlace encontrarás un manual realmente completo de las instrucciones para realizar dicha instalación.

Si trabajas con Linux deberás levantar Daemon de Docker. Y tirar las siguientes ordres en el terminal para levantar Docker:

sudo systemctl enable docker

sudo systemctl start docker

En cambio, si tu máquina tiene es MacOS podrás levantar Docker no es necesario tirar ninguna orden pues se arranca automáticamente por defecto una vez realizada la instalación.

2. El segundo paso consiste en crear un archivo Dockerfile, estos son documentos de texto sin formato, se puede crear uno desde cualquier editor de texto y escribir los comandos que se deseen ejecutar en Docker.

Para crear un archivo Dockerfile vacío utilizando el editor de texto nano así:

nano Dockerfile

Es necesario disponer de todos los comandos y directivas enumeradas sucesivamente. Así pues, primero tendríamos que definir el propósito de nuestro archivo Dockerfile y declarar la imagen base que se usará (configurado con el comando FROM):

 

##########################################
# Archivo Dockerfile para ejecutar jenkins
##########################################

#Establece la imagen de base a utilizar para Ubuntu
FROM jenkins:latest

 

#Establece el autor (maintainer) del archivo (tu nombre - el autor del archivo)
MAINTAINER nombre_del_autor

 

#Install plugins

#Para copiar un fichero

COPY plugins.txt /var/jenkins_home/plugins.txt

#Para ejecutar ordres en el container

RUN /usr/local/bin/plugins.sh /var/jenkins_home/plugins.txt

3. En tercer lugar, debemos crear el fichero plugins.txt, en este fichero se colocan todos los plugins a medida que se instalen en jenkins:

nano plugins.txt

En este fichero se pondrán todos los plugins que necesitemos:

git:latest

4. En penúltimo lugar, solamente necesitaremos crear la imagen Docker de jenkins:

sudo docker build -t jenkins_img .

5. Para finalizar, deberíamos proceder a la creación de un contenedor de jenkins se la siguiente manera:

sudo docker run -name jenkins_ins -d -p 8080:8080 jenkins_img

Una vez acabado, podrás comprobar que Jenkins funciona correctamente en nuestro navegador poniendo “localhost:8080”, si el proceso se ha realizado correctamente debería aparecer un mensaje parecido a este en tu pantalla.

jenkins-unlock

Así pues, espero que este rápido tutorial sobre Docker te sea de utilidad para tus próximos proyectos. Para cualquier consulta o duda sobre este o otros temas relacionados con desarrollo no dudes en contactar conmigo o cualquiera de mis colegas.