¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Docker
  3. Primeros pasos
Extrait - Docker Primeros pasos y puesta en práctica de una arquitectura basada en micro-servicios
Extractos del libro
Docker Primeros pasos y puesta en práctica de una arquitectura basada en micro-servicios Volver a la página de compra del libro

Primeros pasos

Instalación de Docker

Siempre que utilice una versión lo más reciente posible de Linux, la instalación de Docker es un ejemplo de simplicidad. El objetivo de la presente sección no es detallar el proceso para todas las distribuciones de Linux, ni entrar en las opciones complejas de cuota de memoria o configuración de seguridad, sino simplemente dar las instrucciones básicas para que el lector pueda realizar los ejemplos que siguen a continuación.

La página dedicada a la instalación de Docker en el sitio web de referencia https://docs.docker.com/engine/installation/ es exhaustiva sobre este tema, en particular con las opciones sobre las diferentes distribuciones Linux, los modos de implementación en las plataformas cloud, etc. Nuestro objetivo en esta sección, únicamente es hacer que el lector que quiera utilizar una máquina remota o bien instalar Docker en su sistema operativo Linux o Windows, encuentre rápidamente el método más estándar para hacerlo.

A partir de ahora, el producto está disponible en varias ediciones. Se dedicará una explicación para resumir las principales diferencias. El modo de actualización de Docker es una opción a determinar durante la instalación. Los diferentes canales propuestos por Docker para esta operación, también se explicarán.

1. Utilizar máquinas pre-configuradas

Si el lector dispone de una cuenta en el cloud, la manera más sencilla es reservar una máquina que soporte Docker en este tipo de plataformas. De esta manera, la instalación ya está realizada, actualizada y en una configuración que podemos esperar que sea óptima.

Casi todas las plataformas ofrecen suscripciones gratuitas para un periodo de prueba, incluso ofertas sin gastos en las que solo está limitado el consumo de recursos. Para formarse en una tecnología, estas soluciones son ideales, porque permiten no tener que modificar nada en su ordenador personal, ni perder tiempo en los aspectos relativos a la instalación o los requisitos previos (que no tienen ningún valor de aprendizaje, porque son completamente diferentes en otro contexto).

Una vez más, el objetivo del presente capítulo no es describir de manera exhaustiva los métodos para lanzar Docker en los clouds existentes....

Hello World, Docker

1. Puesta en marcha de un contenedor sencillo

Una vez que se ha tratado el tema de la instalación de Docker, es momento de comenzar a explorar la herramienta en sí misma. Como cualquier tecnología informática que se precie, Docker dispone de un ejemplo "Hello World". En nuestro caso, un contenedor que no hace nada salvo mostrar un mensaje de bienvenida. El interés de este tipo de enfoque es que permite validar que la instalación del producto se hace de manera correcta, verificar que el conjunto de la cadena lógica funciona y servir de ayuda al usuario principiante.

Poner en marcha un contenedor Hello World


docker run hello-world
 

A partir de ahora y en lo que sigue en este libro, consideramos que se trata la gestión de los permisos. De esta manera, si es necesario utilizar en los comandos la palabra clave sudo en Linux como prefijo, ya no lo mostraremos más en los ejemplos. Se puede recibir un mensaje con el texto " permission denied " o una expresión parecida, lo que indica que se debe añadir la palabra clave si es necesario o tratar el problema de seguridad. Con el mismo objetivo de simplificación, los ejemplos se muestran en Linux.

Excepto algún problema de instalación de Docker o de acceso a Internet, la visualización debería ser la siguiente:


Hello from Docker. 
This message shows that your installation appears to be working 
correctly. 
 
To generate this message, Docker took the following steps: 
 1. The Docker client contacted the Docker daemon. 
 2. The Docker daemon pulled the "hello-world" image from the 
    Docker Hub. (Assuming it was not already locally available.) 
 3. The Docker daemon created a new container from that image 
    which runs the executable that produces the output you are 
    currently reading. 
 4. The Docker daemon streamed that output to the Docker client, 
    which sent it to your terminal. 
 
To try something more ambitious, you can run an Ubuntu container 
with: 
 $ docker run -it ubuntu bash 
 
For more examples and ideas, visit: 
http://docs.docker.com/userguide/
 

2. ¿Qué ha sucedido?

Aunque la ejecución del comando anterior sea muy rápida, se han producido un determinado número de operaciones...

Utilizar imágenes Docker preexistentes

1. El Docker Store

a. El principio

El primer ejemplo de ejecución de Docker se ha mostrado anteriormente, en el que se  utiliza una imagen existente, porque se trata del medio más sencillo de establecer los contenedores. En la práctica, utilizar contenedores existentes en lugar de crear los suyos propios representa la mayoría de los casos de uso.

El éxito de Docker reside, no solamente en la herramienta en sí misma, sino también para una gran parte, en el hecho de que Docker - ayudado por una abundante comunidad - pone a disposición del público un gran número de imágenes pre-construidas. De esta manera es posible desarrollar contenedores con Apache, Nginx, PostgreSQL, MongoDB, WordPress y centenares de otros servidores y aplicaciones utilizando un sencillo comando, eventualmente acompañado de la configuración adecuada.

El sitio web Docker Store, accesible en https://store.docker.com, da acceso a estas imágenes:

images/02RI84N.png

b. Búsqueda y cualificación de imágenes

Un clic en el enlace Explore, en la parte superior derecha de la interfaz, no permite acceder a una interfaz de búsqueda de imágenes (observe que no es imprescindible crear una cuenta para acceder a esta parte del sitio web):

images/02RI85N.png

La columna de la izquierda permite filtrar la búsqueda por categorías y por medio de otras opciones que vamos a detallar. También es posible filtrar por una expresión textual, al entrar en la zona de texto junto a la lupa, en la parte superior de la interfaz (aunque no sea visible en la captura de pantalla anterior).

La primera opción de filtro en la parte superior izquierda, merece una explicación particular. Por defecto, se posiciona en Store, lo que quiere decir que las imágenes que aparecerán han sido verificadas por Docker, lo que hace que tengan un mayor nivel de seguridad que las imágenes comunitarias potencialmente archivadas por cualquiera en el registro. La única condición para esta operación era crear una cuenta, no hay absolutamente ninguna garantía asociada y las imágenes pueden contener errores de seguridad intencionados, virus o cualquier tipo de ataque. Por lo tanto, hay un interés real cuando están disponibles, en utilizar imágenes Docker de tipo Store. Por el contrario, teniendo en...

Un segundo contenedor

Después de esta primera ejecución de un contenedor de tipo hello-world, así como de las disquisiciones sobre la manera de encontrar las imágenes ya existentes en el registro Docker Hub, vamos a pasar a una segunda etapa que consiste en lanzar un contenedor un poco más complicado, con la que esta vez vamos a ver una interacción real. La imagen hello-world se contenta con mostrar un texto. Esto ha permitido abordar sin problemas lo que sucede en el fondo, pero es evidente que una sencilla visualización como esta no es muy útil.

Nuestra segunda operación consistirá en escribir archivos en un contenedor de tipo ubuntu. La imagen ubuntu, como su nombre indica, contiene simplemente una instalación minimalista del sistema operativo. El hecho de que el nombre no esté prefijado, significa que se trata de una imagen oficial.

1. Recuperación de la imagen

Vamos a comenzar simplemente descargando la imagen, lo que implicaría abordar la noción de tag.

Recuperación de una imagen en su última versión


docker pull ubuntu:latest
 

La descarga llevaría algunos segundos, incluso minutos, en función de su conexión a Internet. Sin embargo, esta carga de la imagen solo tiene lugar una única vez y cualquier ejecución posterior se basará en esta imagen, incluidas además (lo que representa una de las grandes fortalezas de la arquitectura por capas) todas las imágenes que se basan en esta (y son numerosas, Ubuntu siendo una distribución básica frecuentemente utilizada para las imágenes Docker).

El cliente Docker devuelve información de la descarga actual:

images/02RI149N.png

Una vez que se realiza esta descarga, un comando permite ver las imágenes disponibles localmente.

Visualizar las imágenes Docker presentes en la máquina


docker images
 

El resultado sería una visualización como se muestra a continuación:

images/02RI150N.png

2. Explicación de los tags

Vemos que el tag asociado a la imagen ubuntu es latest, como se había indicado en el comando pull. El tag es un tipo de marcador de versiones de la imagen. Sin embargo, al contrario de lo que sucede con un sistema de versiones, es posible tener varios tags para una misma versión. Por ejemplo, la última versión que hemos descargado está marcada con el tag latest, para...

Regreso a los primeros pasos

Este capítulo ha mostrado los principales comandos para controlar Docker y abordar, de manera serena, sus usos más industriales.

Sin embargo, es conveniente observar que, aunque por el momento estemos únicamente en fase de iniciación, los usos realizados ya son importantes:

  • Hemos creado contenedores sellados con un OS potencialmente diferente al de la máquina host.

  • Hemos lanzado procesos potencialmente peligrosos en un entorno de pruebas, haciendo de esta manera que sean inofensivos.

  • Hemos expuesto archivos estáticos a un servidor web y esto, sin tener que gestionar una instalación compleja.

  • Hemos iniciado y detenido más de una docena de entornos, todo en apenas pocos minutos.

Una de las grandes fortalezas de Docker es permitir, desde las primeras operaciones, realizar operaciones de alto valor pero potencialmente complejas de realizar sin esta herramienta. Además, podemos establecer una comparación con los enfoques de tipo cloud.

Debido a su enfoque destinado al alquiler, Amazon, Azure y otros clouds permiten que proyectos de pequeño tamaño accedan a los recursos informáticos, que estarían fuera de su alcance financieramente hablando.

De la misma manera, Docker permite montar arquitecturas de software complejas de manera sencilla, lo que abre la vía a determinados proyectos que no podrían disponer de las competencias de instalación...