
En este tutorial, explicaré cómo crear un contenedor MariaDB o MySQL con Docker.
Hoy en día, cada vez hay más aplicaciones presentes en las empresas que requieren de una base de datos.
Anteriormente, solíamos tener un servidor dedicado para bases de datos MySQL o MariaDB, o todas las bases de datos coexistían en el mismo servidor y con el mismo servicio. Para aislarlas, teníamos que crear usuarios dedicados para cada base de datos.
El problema con esta solución es que se comparte el mismo servicio, si una aplicación a través de una consulta colapsa el servidor de base de datos, todas las aplicaciones se ven impactadas.
Con Docker podremos ejecutar varias instancias diferentes en el mismo servidor y aislar los servidores MariaDB y MySQL.
Esta solución también nos da flexibilidad en cuanto a las versiones, porque ciertos editores quieren versiones específicas.
Para comenzar, necesitas tener un servidor Linux con Docker y docker-compose instalado, si es necesario he cubierto este tema en el siguiente tutorial: Instalación de Docker en Ubuntu y Debian.
Para facilitar la implementación de bases de datos MariaDB y/o MySQL, he creado un conjunto de archivos docker-compose.yml y .env, que se pueden reutilizar en esta dirección : https://git.rdr-it.com/docker/mariadb-or-mysql-container
Para ilustrar el tutorial y el uso de archivos, implementaremos dos contenedores de bases de datos, uno MariaDB y otro MySQL.
Antes de comenzar, debe saber qué versiones necesita y recuperar las etiquetas de versión:
- MariaDB : https://hub.docker.com/_/mariadb
- MySQL : https://hub.docker.com/_/mysql
En el servidor, cree una carpeta que recibirá el contenedor:
sudo mkdir mariadb-c1
Por mi parte, suelo crear una carpeta de contenedores en la raíz y luego creo una subcarpeta por contenedor.
Colóquelo en la carpeta que acaba de crear y clone el repositorio en ella:
sudo git clone https://git.rdr-it.com/docker/mariadb-or-mysql-container.git .
Una vez clonado el repositorio, editaremos el archivo .env que contiene todos los parámetros de personalización del contenedor.
sudo nano .env
Aquí está la lista de parámetros para editar:
Configuración | Valor |
NAME_CONTAINER | Nombre del contenedor |
DB_ENGINE | mariadb / mysql |
DB_VERSION | Etiqueta la imagen que quieras para el motor de base de datos |
PORT_EXPOSE | Desde donde estará disponible el servicio MySQL o MariaDB |
MYSQL_DATABASE | Nombre de la base de datos que se creará |
MYSQL_ROOT_PASSWORD | Contraseña de la cuenta root |
MYSQL_USER | Usuario que se creará al mismo tiempo que la base de datos |
MYSQL_PASSWORD | Contraseña de usuario MYSQL_USER |
Así se ve el archivo para tener un contenedor MariaDB en la versión 10.9 con una base de datos db1, el contenedor estará expuesto en el puerto 40001 del servidor host.

Lo único que queda es iniciar el contenedor:
sudo docker-compose up -d
Si la imagen no está presente, primero la descargará y luego iniciará el contenedor. Como alternativa, podría haber usado previamente el comando sudo docker-compose pull para subir la imagen al servidor Docker.
El comando sudo docker ps nos permite ver que nuestro contenedor está ejecutándose:

Repetimos la operación, esta vez para tener un contenedor MySQL 5.7:

Ahora podemos ver que tengo dos contenedores (servidores) MariaDB y MySQL ejecutándose en el mismo servidor:

Si necesita restaurar una base de datos en un contenedor, aquí está el comando:
sudo docker exec -i <container-name> mysql --user <user> --password=<password-for-user> <database> < </home/my-user/backup-file.sql>
Ahora sabe cómo implementar contenedores MariaDB y MySQL en el mismo servidor.
Al utilizar un contenedor, el servidor MySQL/MariaDB está automáticamente disponible para acceso remoto.