Introducción
Docker es un conjunto de productos de plataforma como servicio que admiten el desarrollo de CI/CD. Permite a los usuarios desarrollar e implementar aplicaciones dentro de entornos virtuales, llamados contenedores. Con una sola imagen, Docker puede iniciar una aplicación con todas sus bibliotecas y dependencias.
En este tutorial, aprenda a implementar un contenedor MySQL Docker y comience a trabajar con la base de datos en contenedores.
Requisitos previos
- Acceso a una línea de comando/ventana de terminal
- Una cuenta de usuario con sudo privilegios o acceso a la raíz cuenta
- Una instalación de Docker existente
Ejecución de un contenedor MySQL Docker
Si necesita configurar una base de datos rápidamente y sin utilizar demasiados recursos, desplegar MySQL en un contenedor es una solución rápida y eficiente. Esto solo es apropiado para aplicaciones pequeñas y medianas. Las aplicaciones de nivel empresarial no encontrarían un contenedor MySQL Docker suficiente para su carga de trabajo.
El uso del software Docker para configurar su base de datos se está volviendo cada vez más popular para las aplicaciones a pequeña escala. En lugar de tener un servidor separado para alojar la base de datos, puede implementar un contenedor de base de datos MySQL.
Múltiples contenedores pueden ejecutarse en su computadora. Los contenedores comparten el mismo kernel y bibliotecas del host mientras empaquetan la aplicación o el software implementado en unidades individuales. Esto hace que la base de datos sea extraordinariamente ligera y rápida de poner en marcha.
Instalación de un contenedor MySQL Docker
Configurar una base de datos en Docker es simplemente construir un contenedor basado en una imagen MySQL. Siga los pasos que se describen a continuación para poner en funcionamiento su contenedor MySQL.
Paso 1:extraiga la imagen de MySQL Docker
1. Comience extrayendo la imagen de Docker adecuada para MySQL. Puede descargar una versión específica u optar por la última versión como se ve en el siguiente comando:
sudo docker pull mysql/mysql-server:latest
Si desea una versión particular de MySQL, reemplace latest
con el número de versión.
2. Verifique que la imagen ahora esté almacenada localmente enumerando las imágenes de Docker descargadas:
sudo docker images
La salida debe incluir mysql/mysql-server
entre las imágenes enumeradas.
Paso 2:implementar el contenedor MySQL
1. Una vez que tenga la imagen, continúe con la implementación de un nuevo contenedor MySQL con:
sudo docker run --name=[container_name] -d [image_tag_name]
- Reemplazar
[container_name]
con el nombre de tu elección. Si no proporciona un nombre, Docker genera uno aleatorio. - El
-d
La opción indica a Docker que ejecute el contenedor como un servicio en segundo plano. - Reemplazar
[image_tag_name]
con el nombre de la imagen descargada en el Paso 1.
En este ejemplo, creamos un contenedor llamado mysql_docker
con el latest
etiqueta de versión:
sudo docker run --name=[container_name] -d mysql/mysql-server:latest
2. Luego, verifique si el contenedor MySQL se está ejecutando:
docker ps
Debería ver el contenedor recién creado en la lista de resultados. Incluye detalles del contenedor, uno de los cuales es el estado de este entorno virtual. El estado cambia de health: starting
para healthy
, una vez completada la configuración.
Paso 3:Conéctese al contenedor MySQL Docker
1. Antes de que pueda conectar el contenedor del servidor MySQL con el host, debe asegurarse de que el paquete del cliente MySQL esté instalado:
apt-get install mysql-client
2. Luego, abra el archivo de registros para el contenedor de MySQL para encontrar la contraseña raíz generada:
sudo docker logs [container_name]
Para mysql_docker
contenedor, ejecutamos:
sudo docker logs mysql_docker
3. Desplácese por el resultado y busque la línea [Entrypoint] GENERATED ROOT PASSWORD
:, copie y pegue la contraseña en un bloc de notas o editor de texto para poder usarla más tarde.
4. A continuación, vaya al shell bash del contenedor MySQL escribiendo:
sudo docker exec -it [container_name] bash
Para el contenedor creado como ejemplo, ejecutamos:
sudo docker -it mysql_docker bash
3. Proporcione la contraseña raíz que copió del archivo de registros, cuando se le solicite. Con eso, ha conectado el cliente MySQL al servidor.
4. Finalmente, cambie la contraseña raíz del servidor para proteger su información:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '[newpassword]';
Reemplazar [newpassword]
con una contraseña segura de su elección.
Configurar contenedor MySQL
Cuando instala un contenedor MySQL, encontrará sus opciones de configuración en /etc/mysql/my.cnf=
directorio.
Si necesita modificar la configuración, cree un archivo de configuración alternativo en la máquina host y móntelo dentro del contenedor.
1. Primero, cree un nuevo directorio en la máquina host:
sudo mkdir -p /root/docker/[container_name]/conf.d
2. Cree un archivo de configuración de MySQL personalizado dentro de ese directorio:
sudo nano /root/docker/[container_name]/conf.d/my-custom.cnf
3. Una vez en el archivo, puede agregar líneas con la configuración deseada.
Por ejemplo, si desea aumentar el número máximo de conexiones a 250 (en lugar de las 151 predeterminadas), agregue las siguientes líneas al archivo de configuración:
[mysqld]
max_connections=250
4. Guarde y salga del archivo.
5. Para que se realicen los cambios, debe eliminar y volver a ejecutar el contenedor de MySQL . Esta vez, el contenedor utiliza una combinación de opciones de configuración del archivo recién creado y los archivos de configuración predeterminados.
Para ello, ejecute el contenedor y asigne la ruta del volumen con el comando:
docker run \
--detach \
--name=[container_name] \
--env="MYSQL_ROOT_PASSWORD=[my_password]" \
--publish 6603:3306 \
--volume=/root/docker/[container_name]/conf.d:/etc/mysql/conf.d \
mysql
6. Para verificar si el contenedor cargó la configuración desde el host, ejecute el siguiente comando:
mysql -uroot -pmypassword -h127.0.0.1 -P6603 -e 'show global variables like "max_connections"';
Debería ver que el número máximo de conexiones ahora es 250
.
Administrar almacenamiento de datos
De forma predeterminada, Docker almacena datos en su volumen interno.
Para verificar la ubicación de los volúmenes, use el comando:
sudo docker inspect [container_name]
Verá el /var/lib/mysql
montado en el volumen interno.
También puede cambiar la ubicación del directorio de datos y crea uno en el host. Tener un volumen fuera del contenedor permite que otras aplicaciones y herramientas accedan a los volúmenes cuando sea necesario.
1. Primero, encuentre un volumen apropiado en el host y cree un directorio de datos en él:
sudo mkdir -p /storage/docker/mysql-data
2. Ahora inicie el contenedor nuevamente, montando el directorio creado anteriormente:
docker run \
--detach \
--name=[container_name] \
--env="MYSQL_ROOT_PASSWORD=my_password" \
--publish 6603:3306 \
--volume=/root/docker/[container_name]/conf.d:/etc/mysql/conf.d \
--volume=/storage/docker/mysql-data:/var/lib/mysql \
mysql
Si inspecciona el contenedor, debería ver que el contenedor MySQL ahora almacena sus datos en el sistema host. Ejecute el comando:
sudo docker inspect [container_name]
Iniciar, detener y reiniciar contenedor MySQL
El contenedor se detiene automáticamente cuando se detiene el proceso que se ejecuta en él.
Para iniciar el contenedor MySQL ejecutar:
sudo docker start [container_name]
Detener el contenedor de MySQL , usa el comando:
sudo docker stop [container_name]
Para reiniciar el contenedor MySQL ejecutar:
sudo docker restart [container_name]
Eliminar contenedor MySQL
Antes de eliminar un contenedor de MySQL, asegúrese de detenerlo primero.
Luego, elimine el contenedor docker con:
sudo docker rm [container_name]