Skip to content

Latest commit

 

History

History
176 lines (127 loc) · 6.95 KB

part2.adoc

File metadata and controls

176 lines (127 loc) · 6.95 KB

Docker

Resumen

Resumen del tutorial de Docker Hub

Objetivos
  • Conocer Docker Hub.

  • Buscar imágenes en el repositorio Docker Hub.

  • Utilizar imágenes de terceros.

  • Crear un docker-compose para una imágen de terceros.

1. ¿Qué es Docker Hub?

Docker Hub es un servicio proporcionado por Docker para encontrar y compartir imágenes de contenedores en nuestros ordenadores. El mismo, presenta las siguientes características o elementos principales:

  • Repositorios: Para la gestión (push and pull) de las imágenes de los contenedores.

  • Equipos y organizaciones: Para la gestión del acceso a los depósitos privados de imágenes de contenedores.

  • Imágenes oficiales: Son imágenes de alta calidad de los contenedores proporcionadas por Docker.

  • Imágenes de editores: Son imágenes de alta calidad de contenedores proporcionadas por proveedores externos. Estás imágenes certificadas, también incluyen soporte y garantía de compatibilidad con Docker Enterprise.

  • Creaciones: Imágenes de contenedores propias creadas desde GitHub y Bitbucket, que luego son cargadas a Docker Hub.

  • Webhooks: Acciones programadas sobre un repositorio cargado para integrar Docker Hub con otros servicios.

hub
Figure 1. Interfaz de Docker Hub

La interfaz principal de Docker Hub nos permite realizar búsquedas de imágenes de contenedores filtrando por diferentes parámetros como el tipo de imágen (oficial o no) o la categoría (Bases de datos, aplicaciones, etc.).

Note

Podéis registraros en web oficial de Docker para poder usar las funciones avanzadas de Docker Hub como es la creación de repositorios.

2. Desarrollo

En el siguiente ejemplo vamos a ver como pasar desde una imagen alojada en Docker Hub a un archivo docker-compose. Para ello usaremos la imagen de Couchbase, una base de datos documental que acepta el lenguaje de consultas SQL.

Logo de Couchbase
Figure 2. Logo de Couchbase

2.1. Búsqueda de la imágen

Utilizaremos el buscador de Docker Hub para buscar la imágen de Couchbase. Para ello debemos encontrarnos en Containers e introducir couchbase en el cuadro de búsqueda.

hub search couchbase
Figure 3. Resultado de la búsqueda de couchbase

Los resultados aparecen ordenados aproximación a los términos de búsqueda pero podemos cambiarlo al número de estrellas o descargas. De cada resultado podemos ver si es una imagen oficial, la fecha de actualización, una breve descripción, etiquetas, número de descargas y estrellas.

Note

Normalmente nos interesa seleccionar imágenes oficiales con un número alto de descargas y estrellas.

2.2. Información de la imágen Couchbase

Una vez seleccionamos el resultado que nos interesa, podemos ver un resumen de las características de la imagen, así como instrucciones para descargarla con Docker.

hub couchbase info
Figure 4. Información de la imagen Couchbase

En este caso se trata de una imagen oficial que puede ser ejecutada en entornos x86_64 y que se puede descargar con docker pull couchbase.

A continuación aparaece una descripción en la que los creadores de la imagen normalmente describen su funcionamiento y uso en diferentes escenarios, así como acceso a documentación y código fuente. Primero podemos ver como se ejecuta el contenedor y que puertos hay que mapear.

Example 1. Extracto de la descripción de la imagen de Couchbase
QuickStart with Couchbase Server and Docker
Here is how to get a single node Couchbase Server cluster running on Docker containers:

Step - 1 : Run Couchbase Server docker container

docker run -d --name db \
-p 8091-8094:8091-8094 \ (1)
-p 11210:11210 \ (2)
couchbase

Step - 2 : Next, visit http://localhost:8091 on the host machine to see the Web Console to start Couchbase Server setup. (3)
  1. Puertos 1 - Rango

  2. Puertos 2

  3. Url para probar que Couchbase funciona

También podemos ver como hacer persistentes los datos que utiliza la imagen para que no los perdamos al reiniciar el contenedor.

Example 2. Extracto de la descripción de la imagen de Couchbase

Map Couchbase Node Specific Data to a Local Folder : A Couchbase Server Docker container will write all persistent and node-specific data under the directory /opt/couchbase/var by default. It is recommended to map this directory to a directory on the host file system using the -v option to docker run to get persistence and performance.

  • Persistence: Storing /opt/couchbase/var outside the container with the -v option allows you to delete the container and recreate it later without losing the data in Couchbase Server. You can even update to a container running a later release/version of Couchbase Server without losing your data.

A modo de resumen necesitamos:

  1. Mapear el rango de puertos 8091-8094

  2. Mapear el puerto 11210

  3. Crear un volumen para la ruta /opt/couchbase/var

  4. Comprobar que funciona la interfaz web que se encuentra en http://localhost:8091

2.3. Creación de docker-compose.yml con los datos analizados

A partir de la información anterior podemos crear un fichero docker-compose.yml que nos ayude a ejecutar Couchbase sin necesida de tener que recordar todos los parametros de la invocación docker run

Example 3. Archivo de definición docker-compose.yml para levantar Wordpress.
version: '3.3' (1)

services: (2)
   couchbase: (3)
     image: couchbase (4)
     ports:
       - "8091-8094:8091-8094" (5)
       - "11210:11210" (6)
     volumes:
       - ./data:/opt/couchbase/var (7)
  1. Versión de formato de docker-compose (actualmente es esa).

  2. Servicios que componen el docker-compose.

  3. Nombre que le damos al servicio. Puede ser el que queramos.

  4. Nombre de la imagen de couchbase en Docker Hub.

  5. Puertos 1

  6. Puertos 2

  7. Volumen de datos local relativo al fichero docker-compose.yml

3. Actividades

3.1. Crear docker-compose.yml para una imagen encontrada en Docker Hub

Busca en Docker Hub una imagen que te resulte interesante y crea un docker-compose.yml para poder ejecutarla fácilmente. Es interesante que la imagen encontrada tenga al menos alguna de las siguientes características:

  1. Puertos a mapear. ej. Una consola web

  2. Volumen para persitencia. ej. Los datos de una base de datos

  3. Dependencia de otros servicios. ej. Wordpress necesita una base de datos