Práctica 6. Creación de un contenedor Docker con MariaDB

José Juan Sánchez Hernández

IES Celia Viñas (Almería) - 2019/2020

2 Creación de un contenedor Docker con MariaDB

2.1 Requisitos

Para poder ejecutar contenedores Docker es necesario tener instalado Docker Community Edition (CE) en nuestro equipo.

En la web oficial encontrará la información necesaria para realizar la instalación de Docker CE sobre Windows, macOS, Ubuntu, Debian, Fedora y CentOS.

2.2 Cómo crear un contenedor sin persistencia de datos

Un contenedor Docker que no tiene persistencia de datos quiere decir que cuando finalice la ejecución perderá todo el contenido que hayamos creado durante la ejecución. Es decir, si durante la ejecución del contenedor hemos creado varias bases de datos en MariaDB, éstas se perderán cuando el contenedor se detenga.

El comando que podríamos usar para lanzar nuestro contenedor Docker con MariaDB sin persistencia de datos podría ser el siguiente:

docker run -d --rm --name mariadb -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mariadb

2.3 Cómo crear un contenedor con persistencia de datos

Si queremos que los datos del contenedor sean persistentes tenemos que crear un volumen donde vamos a indicar el directorio de nuestra máquina local vamos a almacenar el directorio /var/lib/mysql, que es el directorio que utiliza MariaDB para almacenar las bases de datos.

Para crear un volumen utilizamos el parámetro -v.

Docker nos ofrece dos posibilidades para implementar persistencia de datos en los contenedores:

En la documentación oficial podemos encontrar más información sobre el uso de volumenes en Docker.

Ejemplo de uso del parámetro -v para crear un volumen de tipo bind_mount:

-v /home/josejuan/data:/var/lib/mysql

En este caso el directorio /home/josejuan/data de nuestra máquina local estará sincronizado con el directorio /var/lib/mysql del contenedor con MariaDB.

Podemos hacer uso de la variable de entorno $PWD para indicar que queremos crear el volumen en nuestro directorio actual.

Ejemplo de uso del parámetro -v para crear un volumen de tipo bind_mount con la variable de entorno $PWD:

-v "$PWD":/var/lib/mysql

Ejemplo de uso del parámetro -v con un volumen de tipo volume:

-v mariadb_data:/var/lib/mysql

El comando que podríamos usar para lanzar nuestro contenedor Docker con MariaDB con persistencia de datos en un volumen podría ser el siguiente:

docker run -d --rm --name mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -v mariadb_data:/var/lib/mysql mariadb

2.4 Cómo comprobar que el contenedor está en ejecución

Una vez que hemos iniciado el contenedor podemos comprobar que se está ejecutando con el siguiente comando:

docker ps

Deberíamos obtener una salida similar a esta.

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
52bcaee9a157        mariadb             "docker-entrypoint.s…"   4 seconds ago       Up 2 seconds        0.0.0.0:3306->3306/tcp   mariadb

2.5 Cómo conectar con MariaDB

Una vez que MariaDB está en ejecución podemos conectarnos con cualquier cliente: MySQL Workbench, PHPMyAdmin, Adminer, etc.

Los datos de conexión serán:

2.6 Cómo detener el contenedor

Para detener el contenedor en primer lugar tenemos que conocer cuál es su ID. Para obtenerlo podemos hacer uso del comando docker ps.

docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
52bcaee9a157        mariadb             "docker-entrypoint.s…"   4 seconds ago       Up 2 seconds        0.0.0.0:3306->3306/tcp   mariadb

En la primera columna podemos ver cuál es el CONTAINER ID. Una vez localizado el identificador ejecutamos el comando docker stop y le pasamos como parámetro el identificador del contenedor que queremos detener.

Para el caso anterior deberíamos ejecutar:

docker stop 52bcaee9a157

2.7 Referencias

3 Licencia

Licencia de Creative Commons
Esta obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional.