Esta guía explica paso a paso cómo configurar un nuevo servidor MySQL que se ejecute en un contenedor Docker en solo unos minutos.
Una de las mejores cosas sobre Docker es que puede usarlo rápidamente para probar aplicaciones sin instalarlo directamente en su máquina. Por ejemplo, puede usar Docker para ejecutar una base de datos en un contenedor como un servidor remoto y probar cómo interactúa su aplicación con él.
Ejecutar MySQL con contenedores Docker es un mecanismo ampliamente utilizado. MySQL es una de las bases de datos más populares utilizadas con contenedores Docker.
Para crear MySQL como un contenedor de Docker, la máquina host debe tener instalado Docker. Si no lo tiene instalado, aquí tiene una guía paso a paso para instalar Docker en Ubuntu.
1. Extraiga la imagen de MySQL Docker
Lo primero que debe hacer para crear y probar el servidor MySQL en Docker es extraer una imagen oficial de MySQL del Docker Hub.
Puede descargar una versión específica como 8.0, 5.7, 5.6 u optar por la última versión como se ve en el siguiente comando:
sudo docker pull mysql:latest
Si desea una versión particular de MySQL, reemplace la latest
con el número de versión.
Puede ejecutar las docker images
Comando para ver una lista de imágenes de Docker que ha extraído de Docker Hub.
sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest 2fe463762680 13 hours ago 514MB
Como puede ver, la imagen de MySQL ahora está disponible para nuestro Docker instalado localmente.
2. Configuración de un volumen Docker
Como sabe, los contenedores de Docker son, en principio, temporales y se espera que cualquier dato o configuración se pierda si se elimina el contenedor.
Sin embargo, los volúmenes de Docker proporcionan un mecanismo para conservar los datos creados dentro de un contenedor de Docker. Por lo tanto, son el mecanismo preferido de Docker para almacenar datos persistentes de contenedores Docker.
MySQL almacena sus archivos de datos en /var/lib/mysql
directorio. Entonces, antes de implementar, deberá configurar un volumen de Docker para conservar su base de datos. De lo contrario, sus datos se perderán cuando se reinicie el contenedor.
Creemos un nuevo volumen y asígnele el nombre mysql-data
. Se utilizará para almacenar toda la información de su base de datos.
sudo docker volume create mysql-data
Puede enumerar todos los volúmenes conocidos por Docker emitiendo el siguiente comando:
sudo docker volume ls
DRIVER VOLUME NAME
local mysql-data
Como puede ver, nuestro volumen Docker recién creado llamado mysql-data
está aquí y listo para servir datos. Luego se puede adjuntar a un contenedor MySQL recién creado.
3. Ejecute un contenedor MySQL Docker
Ahora que tiene una imagen de MySQL Docker en su máquina y un volumen para conservar los datos, puede implementar un contenedor. También debe establecer una contraseña para el usuario root de MySQL usando MYSQL_ROOT_PASSWORD
variable de entorno.
Ahora, ejecutemos el contenedor:
sudo docker run -d --name=mysql-server -p 3306:3306 -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=your_password mysql
Eso es todo. Esto iniciará la última versión de la instancia de MySQL, a la que se puede acceder de forma remota desde cualquier lugar con la contraseña raíz especificada.
Para hacer las cosas más transparentes, analicemos esta sintaxis. Primero, esto es lo que significa cada parámetro en ese comando:
-d
ejecutará este contenedor en un modo separado para que se ejecute en segundo plano.--name
asigna el nombremysql-server
a su instancia de contenedor. Si no especifica esto, Docker generará un nombre aleatorio.-p
vinculará el puerto del contenedor MySQL3306
al mismo puerto en su máquina host. Podrá conectarse a127.0.0.1
en el puerto3306
utilizando clientes MySQL (mysql
) ejecutándose en su host.-v
opción vincular esa carpeta de datos dentro del volumen del contenedor (/var/lib/mysql
) al volumen Docker local (mysql-data
) que creó en el paso anterior.-e
establece una variable de entorno. En este caso, la contraseña raíz de MySQL.mysql
es el nombre de la imagen que usamos para crear el contenedor.
Puede verificar si el contenedor se está ejecutando enumerando los contenedores en ejecución:
sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0fc229e3df77 mysql "docker-entrypoint.s…" 37 minutes ago Up 34 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql-server
4. Conexión al contenedor de MySQL
Puede obtener un shell de MySQL interactivo adjuntándolo al contenedor y ejecutando mysql
dominio. Esto proporciona la interfaz de línea de comandos completa de MySQL para usar todos los comandos y banderas familiares.
sudo docker exec -it mysql-server mysql -u root -p
También puede conectarse con la instancia de MySQL Docker usando mysql
cliente si lo tiene preinstalado en su host.
Tenga en cuenta que, de forma predeterminada, el cliente mysql intenta conectarse mediante un socket UNIX cuando le indica que se conecte a localhost
. Así que usa 127.0.0.1
y no localhost
.
mysql -u root -h 127.0.0.1 -p
Por supuesto, también puede usar un cliente basado en GUI como MySQL Workbench para conectarse a la base de datos. Por ejemplo, en su MySQL Workbench para "Nombre de host", especifique la dirección IP de la máquina en la que inició Docker Container.
Por supuesto, en los ejemplos que se muestran arriba para un nombre de host, puede usar la dirección IP de la máquina en la que funciona el contenedor acoplable MySQL en lugar de 127.0.0.1.
Puede encontrar esta dirección ejecutando ifconfig
comando sin argumentos.
El uso de la dirección IP de la máquina le permite acceder al servidor MySQL de forma remota.
5. Detener, iniciar y reiniciar el contenedor de MySQL
Este comando detendrá temporalmente el contenedor MySQL en ejecución (y se puede reanudar/reiniciar más tarde):
sudo docker stop mysql-server
Para empezar el contenedor de MySQL, ejecuta:
sudo docker start mysql-server
El siguiente comando se usa para reiniciar el contenedor MySQL en ejecución:
sudo docker restart mysql-server
Conclusión
Como puede ver, ejecutar MySQL dentro de Docker es mucho más rápido y fácil que instalar MySQL Server localmente. Sin embargo, hay muchas más cosas a considerar si va a utilizar MySQL en Docker para algo más allá de las pruebas.
Puede consultar la página de MySQL en Docker Hub y el manual oficial de MySQL sobre el tema para obtener más información.
Déjame saber si tienes alguna pregunta o sugerencia. Estaré encantado de hacer un seguimiento contigo.