Instalar MariaDB 5.5/10.1/10.2 en Docker.
Receta detallada para instalar la últimas versiones de MariaDB, varias versiones en Docker.
Una de las ventajas de Docker es la de poder probar un producto sin tener que instalar todo un sistema operativo.
Actualmente con los cambios evolutivos en las versiones de MariaDB y MySQL, es bueno poder probar migraciones de bases de datos entre productos fácilmente.
En Docker existe una página oficial con información sobre MariaDB.
https://docs.docker.com/samples/library/mariadb/
Y un sitio oficial de repositorios de distintas versiones de MariaDB.
https://github.com/docker-library/mariadb
El espacio para la última version de 10.2.xx es
https://github.com/docker-library/mariadb/tree/f50d0a8218602a64806a4eb907b3b5dcc5916981/10.2
Se deben bajar dos archivos localmente en la misma carpeta.
# vi docker-entrypoint.sh
# vi Dockerfile
Luego generar la imágen con
# docker build -t mariadb102 .
Demorará un rato porque debe hacer varios cambios y configuraciones para instalar esa versión de MariaDB.
Podemos cambiar el nombre de la imágen con este comando
# docker tag mariadb102 nuevo_nombre
Arrancar un contenedor usando esa imágen.
# docker run --name mariadb10210 -e MYSQL_ROOT_PASSWORD=testing -d mariadb102
Veremos el contenedor corriendo en background
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d3f16f7859c1 mariadb102 "docker-entrypoint..." 54 seconds ago Up 53 seconds 3306/tcp mariadb10210
Podemos arrancar una sesión “bash” contra ese nuevo contenedor que acabamos de crear.
# docker exec -it mariadb10210 bash
root@d3f16f7859c1:/# df -h
Filesystem Size Used Avail Use% Mounted on
overlay 229G 199G 20G 92% /
tmpfs 64M 0 64M 0% /dev
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda2 229G 199G 20G 92% /etc/hosts
shm 64M 0 64M 0% /dev/shm
tmpfs 3.9G 0 3.9G 0% /sys/firmware
Y también podemos conectarnos desde nuestro equipo real directamente al servidor MariaDB.
# mysql -uroot -p -h 172.17.0.2
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.2.10-MariaDB-10.2.10+maria~jessie mariadb.org binary distribution
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
Como en todo contenedor, podremos parar y arrancarlo con estos comandos, en nuestro caso el contenedor se llama “mariadb10210”.
# docker stop mariadb10210
mariadb10210
# docker start mariadb10210
mariadb10210
Pasamos ahora a generar otras versiones de MariaDB para nuestras pruebas.
# cd 10.1
# docker build -t mariadb101 .
# docker run --name mariadb10128 -e MYSQL_ROOT_PASSWORD=testing -d mariadb101
# cd ../5.5
# docker build -t mariadb55 .
# docker run --name mariadb5558 -e MYSQL_ROOT_PASSWORD=testing -d mariadb55
Las imágenes que tenemos instaladas localmente
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mariadb55 latest 8d77deaa9aa5 About a minute ago 280MB
mariadb101 latest 1b1ceb2ffadd 8 minutes ago 395MB
mariadb102 latest 2e00b3316123 About an hour ago 397MB
Los contenedores creados
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f1773511204b mariadb55 "docker-entrypoint..." About a minute ago Up About a minute 3306/tcp mariadb5558
47b2b77cf25b mariadb101 "docker-entrypoint..." 7 minutes ago Up 7 minutes 3306/tcp mariadb10128
d3f16f7859c1 mariadb102 "docker-entrypoint..." About an hour ago Up 41 minutes 3306/tcp mariadb10210
Y con los 3 motores instalados y funcionando, (172.17.0.2, 3 y 4) las estdísticas simples de uso son.
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
d3f16f7859c1 mariadb10210 0.07% 94.92MiB / 7.685GiB 1.21% 5.78kB / 0B 5.93MB / 2.22MB 30
47b2b77cf25b mariadb10128 0.07% 101.8MiB / 7.685GiB 1.29% 6.07kB / 1.67kB 25.3MB / 141MB 27
f1773511204b mariadb5558 0.12% 102.1MiB / 7.685GiB 1.30% 3.51kB / 0B 7.81MB / 39.9MB 19
Un consumo de recursos bastante menor que tener corriendo 3 servidores Linux, cada uno con una versión distinta de MariaDB.