Instalar MariaDB vía Docker
En la web ya hemos hablado en diferentes artículos sobre el motor de base de datos MariaDB. Esta vez veremos su instalación mediante un contenedor utilizando Docker. Tecnología de la que también hemos hablado y de la cuál actualmente estoy escribiendo una guía, en el proyecto colaboratorio.net
Si seguís dicha guía o habéis trabajado alguna vez con contenedores, sabéis que un contenedor está destinado a ejecutar un servicio específico conjuntamente con las librerías y dependencias que necesita, de manera separada y utilizando muy pocos recursos, comparado con una máquina virtual y que decir con un servidor físico.
Dicho esto, vamos al lío. No explicaré la instalación de Docker en el artículo, ya que tanto en esta web como en la web de colaboratorio.net he hablado de ello.
Instalar MariaDB vía Docker
Primero de todo vamos a ver qué serie de imágenes tenemos disponibles. De la siguiente manera:
docker search mariadb
Nos aparecerán unas cuantas. Nosotros utilizaremos la última versión oficial, llamada “mariadb:latest”
docker pull mariadb:latest
A día de hoy esta versión utiliza el core 10.0
Una vez descargada, la podemos visualizar con el comando : docker images
mariadb latest b1fe0881b739 7 days ago 398MB
Para crear el contenedor utilizando la imagen, primero de todo utilizaremos el parámetro “inspect” para que nos muestre los puertos que utiliza la imagen:
docker inspect b1fe0881b739 | grep –i tcp
Esto lo hacemos, porque queremos exponer el puerto, de tal manera que podamos, desde fuera del servidor Docker, que juega el papel de anfitrión de los contenedores, poder conectar con el servicio de base de datos que “corre” en el contenedor.
Para crear el contenedor vamos a especificar varias cosas, la primera, especificaremos la clave de superusuario utilizando -e MYSQL_ROOT_PASSWORD=nuestra-pass
; además le vamos a asignar un nombre utilizando --name mariadbtst
, de la siguiente manera:
docker run -dti -p 33306:3306 --name mariadbtst -e MYSQL_ROOT_PASSWORD=contrasea b1fe0881b739
Una vez creado ya lo podemos ver en funcionamiento:
[root@centos7 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4ecc6becfcb6 b1fe0881b739 "docker-entrypoint..." 3 seconds ago Up 2 seconds 0.0.0.0:33306->3306/tcp mariadbtst10
Las operaciones habituales de parada y arranque son, para reiniciar docker restart mariadbtst
, para parar docker stop mariadbtst
y para encender docker start mariadbtst
. También existe la opción de pausar un contenedor, de esta manera: docker pause mariadbtst
y para “despausar” docker unpause
Si tenemos algún problema con el contenedor o simplemente queremos ver su actividad, podemos utilizar el parámetro “logs”, de la siguiente manera:
[root@centos7 ~]# docker logs mariadbtst10
Initializing database
PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
To do so, start the server, then issue the following commands:
'/usr/bin/mysqladmin' -u root password 'new-password'
'/usr/bin/mysqladmin' -u root -h password 'new-password'
Alternatively you can run:
'/usr/bin/mysql_secure_installation'
which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.
See the MariaDB Knowledgebase at http://mariadb.com/kb or the
MySQL manual for more instructions.
Please report any problems at http://mariadb.org/jira
The latest information about MariaDB is available at http://mariadb.org/.
You can find additional information about the MySQL part at:
http://dev.mysql.com
Consider joining MariaDB's strong and vibrant community:
https://mariadb.org/get-involved/
Database initialized
MySQL init process in progress...
Si queremos acceder a la consola del contenedor:
docker exec –it mariadbtst /bin/bash
Si no queremos acceder al contenedor podemos interactuar con él, como por ejemplo, para asegurarlo, utilizar la herramienta mysql_secure_installation
docker exec -it mariadbtst10 mysql_secure_installation
Con el resultado:
[root@centos7 ~]# docker exec -it mariadbtst10 mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
You already have a root password set, so you can safely answer 'n'.
Change the root password? [Y/n] n
Editado el 12/02/2018 Si queremos que persistan las bases de datos cuando paramos o eliminamos el contenedor, debemos crear un volumen. En nuestro caso lo vamos a declarar al crear el contenedor, de la siguiente manera, utilizando el parámetros ‘-v’, así:
docker run -dti --name "servmariadb" -p 3306:3306 -v mariadbvol:/var/lib/mysql:rw \
-e MYSQL_ROOT_PASSWORD=contrasea 4f76b7e73b00
De esta manera se creará un carpeta en el host anfitrión en /var/lib/docker/volumes
, con el nombre de ‘mariadbvol’. En la ubicación se guardará toda la información de la carpeta /var/lib/mysql
del contenedor.
Dejamos el artículo aquí, espero que os haya sido interesante y que os pueda ser útil en el algún momento. Nos vamos leyendo.
Para el artículo me he servidor de la siguiente información: