Inicio > Sistemas > Introducción a Docker: Creación y utilidades

Introducción a Docker: Creación y utilidades

docker

En este post queremos hacer una breve introducción al mundo docker (containers) del cual  seguiremos ampliando información en futuras entradas.

Docker es una palabra que actualmente está muy de moda. Tecnológicamente no es nada nuevo, ya existían los containers, chroot, debootstrap, plantillas para crear máquinas… Pero docker ha facilitado todo el proceso y lo ha orientado más a servidores que a servicios.

¿Qué utilidades tiene un docker?

Se pueden diferenciar dos líneas, una de desarrollo y otra de negocio.

En el área de desarrollo, un docker nos sirve para levantar un entorno específico en el que hacer pruebas con sistemas operativos, y también, realizar versiones concretas de la aplicación sin tener que realizar cambios en nuestro equipo; además, permite que otra persona desde otro lugar y sin tener que hacer ninguna configuración especial, levante exactamente el mismo docker.

En el área de negocio, sirve para levantar servicios en muy poco tiempo en función de la carga o necesidades. Cada vez hay más herramientas para orquestar y monitorizar este tipo de acciones. Por ejemplo, si tenemos un frontal web, podemos monitorizar la carga e insertar umbrales, de tal forma que si la carga llega a un 80% continúe levantando más dockers para balancearla; y una vez, disminuya del 30% espere el tiempo que deseemos, 5 minutos por ejemplo, y empiece a detener los containers. Esto es útil en plataformas como aws, digital ocean, etc… en las que se paga por uso.

¿Cómo se crea un docker?

Un container se crea a partir de una receta que se ha almacenado en un fichero Dockerfile constituido principalmente por tres partes:

1. BASE

En la primera línea ponemos la base de nuestro container, debian, centos, oraclelinux… y la versión:

FROM oraclelinux:6.3

También podemos personalizar nuestra propia imagen del sistema linux que deseemos y crear el container:

FROM scratch
ADD rootfs.tar.gz /

2. CONFIGURACIÓN

Luego podemos añadir ficheros, instalar programas, configurar el servidor...

Para añadir ficheros, por ejemplo un certificado o un script, éstos tienen que encontrarse donde se ha construido el docker, ya sea local o en un servidor. Una vez creado el docker, se encontrarán dentro del contenedor:

COPY certificado.crt /usr/share/ca-certificates
ADD script.sh /u01/scripts/

Instalar programas:

RUN yum install -y tar unzip rng-tools sudo

Configurar el servidor, añadiendo por ejemplo usuarios:

RUN groupadd -g 1001 weblogic && useradd -u 1001 -g weblogic weblogic

3. EJECUCIÓN

El contenedor no arranca nada de por sí, por lo que tenemos que indicar todos los servicios que queramos que arranque, por ejemplo un apache y una base de datos.

CMD /etc/init.d/apache2 start \
 && /etc/init.d/mysql start

También, lo que se suele hacer es poner un script en el cual se ejecute todo lo que queramos con parámetros, variables, etc….

CMD [“/u01/scripts/startall.sh”,”parametro1″,”parametro2″]

Una vez que tengamos la receta, ¿cómo lo creamos?

Esta fase se llama BUILD. Si tengo el fichero Dockerfile en local, lo puedo construir directamente en mi PC local. Pero docker permite, además, que esté en el servidor para que más gente lo pueda utilizar. Las imágenes de docker están en http://hub.docker.com

En este enlace podemos buscar imágenes ya creadas, como por ejemplo un wordpress, un apache o un oraclelinux…. Para ello, solo tendríamos que buscar la imagen y ejecutarla.

Para tener tus propias imágenes, tienes que darte de alta y empezar a crear repositorios.

Hay dos tipos de repositorios, públicos o privados. En el caso de usar un software con licencia, no se podría emplazar en un repositorio público. Es el caso de avanttic,  al ser 100% Oracle, las imágenes de weblogic, Oracle, etc… las almacenamos en repositorios privados. También puedes crear tu propio repositorio de contenedores en un servidor propio, como por ejemplo el de tu empresa y promover que las imágenes las usen los empleados u ofrecerlo como servicio.

Hay dos formas de crear el repositorio, podemos tener nuestro fichero Dockerfile en http://hub.docker.com, lo cual sería muy estático, o vincularlo con un control de versiones como puede ser GitHub o Bitbucket. En el caso de insertar un código, por ejemplo, en GitHub, cada vez que se hace un commit de algún fichero, se procede a  generar una nueva versión de la imagen y se sube al hub de docker. En el hub de docker podemos ver estas construcciones, si ha habido fallos y las causas:

selection_711

En este caso habría fallado porque habríamos olvidado subir unos ficheros al repositorio:

Step 9 : RUN chown jenkins. /install && chmod +x /install/*.sh
—> Running in 6d764aa91efb
chmod: cannot access ‘/install/*.sh’: No such file or directory
Removing intermediate container 6d764aa91efb
The command ‘/bin/sh -c chown jenkins. /install && chmod +x /install/*.sh’ returned a non-zero code: 1

¿Cómo usamos el container?

Es muy sencillo, con un simple comando podemos levantar el docker en nuestro PC. Si solo queremos descargar la imagen el comando sería:

docker pull

Y si la queremos ejecutar sería:

docker run

Al hacer el docker run, si no tenemos la imagen en local porque nunca la habíamos descargado antes, se conectará al servidor y la descargará, es decir hará pull y luego run.

Una utilidad de docker es probar un servicio o programa sin necesidad de buscar como se instala, ni como se configura. Por ejemplo, si queremos levantar un jenkins para hacer alguna prueba o un despliegue, simplemente haríamos:

docker run -d avanttic/jenkins

En menos de 1 minuto se bajará la imagen, y ya tenemos un jenkins levantado:

selection_713

Otra utilidad muy importante es no realizar modificaciones en nuestro PC. Por ejemplo, para realizar conexiones VPN, todo su software levanta una interficie virtual y a veces  colisionan entre ellos provocando problemas en nuestro ordenador. En avanttic tenemos cuantiosas conexiones VPN para ofrecer el servicio necesario a nuestros clientes. Creando un docker para cada VPN podremos disponer de todas las que desees, y añadiremos rutas en tu pc para que cada red salga por un docker, y tendrás acceso a todas las VPN. Por ejemplo, para usar la VPN de Cisco annyconnect, tendríamos que levantar el siguiente docker convertido a parámetro y los datos de conexión ya estarían conectados:

docker run –cap-add=ALL -e ANYCONNECT_SERVER= -e ANYCONNECT_USER= -e ANYCONNECT_PASSWORD= –privileged -d -ti avanttic/vpn-anyconnect

En este otro ejemplo, vamos a levantar una versión de weblogic SOA Suite 11.1.1.7. Este contenedor está en un repositorio privado, por lo que primero tenemos que hacer login para que tener permisos:

# docker login

Nos pide nuestro usuario y contraseña, una vez introducidos, ya podemos descargar la imagen:

# docker run -ti avanttic/soasuite1117

Y ya tenemos un Oracle Soa Suite levantado:

selection_712

Si necesitásemos otra versión, por ejemplo la 11.1.1.6, o probar con otra versión de java, simplemente, al cambiar en el fichero Dockerfile los instalables,  se crearía otra imagen con las nuevas versiones.

También se podrían usar etiquetas, de tal forma que tengamos una imagen por versión:

soasuite:1115
soasuite:1116
soasuite:1117

O  incluso, lo podríamos parametrizar para que arrancase con la versión que quisiéramos:

docker run -e JAVA_VERSION=17u99 -e SOA_VERSION=11117 -d soasuite

Esto es muy útil para hacer pruebas, incluso si el equipo de desarrollo está separado físicamente, permite que puedan hacer pruebas sobre el mismo docker.

En resumen, hemos visto como crear y levantar un docker y sus utilidades: probar servicios de forma rápida, versiones y no instalar nada en local.

Categorías:Sistemas Etiquetas: , ,
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: