Cómo configurar el acceso externo a un servidor de base de datos MySQL/MariaDB de un contenedor Docker que ya hemos desplegado con Docker Compose. Como ejemplo, usaremos el contenedor Docker con MariaDB y Pandora FMS. Probamos el acceso remoto desde otro equipo de la red con MySQL Workbench.
- Requisitos para configurar el acceso externo a MySQL/MariaDB a un contenedor Docker existente.
- Configurar fichero YML de Docker Compose para permitir acceso externo a MySQL/MariaDB.
- Volver a desplegar las imágenes de la base de datos con acceso remoto y de Pandora FMS.
- Acceso remoto a MySQL/MariaDB de Docker mediante MySQL Workbench.
Requisitos para configurar el acceso externo a MySQL/MariaDB a un contenedor Docker existente
Únicamente necesitaremos disponer de un equipo con Docker Compose y un contenedor Docker desplegado con MariaDB o MySQL. En el siguiente enlace desplegamos un contenedor con Pandora FMS y MariaDB:
En este tutorial, explicaremos cómo permitir el acceso externo (desde otros equipos de la red) a la base de datos MariaDB del contendor con Pandora FMS. El procedimiento será el mismo para cualquier otro sistema MySQL/MariaDB doquerizado.
Configurar fichero YML de Docker Compose para permitir acceso externo a MySQL/MariaDB
En primer lugar, comprobaremos que disponemos del fichero YML con el que desplegamos el contenedor con MySQL/MariaDB. En caso de no disponer de él, lo volveremos a crear (como indicamos en este tutorial).
Nos situaremos en la carpeta donde tengamos el fichero YML y comprobaremos que tenemos desplegadas las imágenes Docker de Pandora FMS y MySQL/MariaDB (en nuestro caso). Para ello, usaremos el comando:
1 |
docker compose -f docker-compose.yml ps |
Teniendo en cuenta que nuestro fichero YML se llama docker-compose.yml.
Nos devolverá las imágenes iniciadas con la base de datos y con el servidor web para Pandora FMS:
En el ejemplo vemos que en la imagen del servidor web sí se han redireccionado los puertos 443, 41121 y 80, pero no se ha redireccionado el puerto para la imagen de MySQL/MariaDB, que solo tiene el interno 3306.
Para habilitar el acceso externo a la base de datos MySQL/MariaDB del contenedor, editaremos el fichero docker-compose.yml y estableceremos el siguiente contenido (estableceremos el puerto 3333 para acceder de forma remota al MySQL/MariaDB del contenedor Docker):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
services: db: image: rameijeiras/pandorafms-percona-base restart: always command: ["mysqld", "--innodb-buffer-pool-size=300M"] environment: MYSQL_ROOT_PASSWORD: pandora MYSQL_DATABASE: pandora MYSQL_USER: pandora MYSQL_PASSWORD: pandora networks: - pandora ports: - "3333:3306" pandora: image: rameijeiras/pandorafms-community restart: always depends_on: - db environment: MYSQL_ROOT_PASSWORD: pandora DBHOST: db DBNAME: pandora DBUSER: pandora DBPASS: pandora DBPORT: 3306 INSTANCE_NAME: pandora01 SLEEP: 10 RETRIES: 5 volumes: - mysql:/var/lib/mysql networks: - pandora ports: - "8080:80" - "41121:41121" - "162:162/udp" networks: pandora: volumes: mysql: |
En realidad, lo único que hemos modificado en el fichero es añadir las líneas:
1 2 |
ports: - "3333:3306" |
Volver a desplegar las imágenes de la base de datos con acceso remoto y de Pandora FMS
Hay que tener en cuenta que si hemos establecido los volúmenes correspondientes (como en el ejemplo del fichero docker-compose.yml del tutorial anterior) este proceso no eliminará los datos que ya hubiera en las imágenes, los mantendrá.
Una vez modificado el fichero YML, volveremos a desplegar las imágenes, ejecutando el comando:
1 |
docker compose -f docker-compose.yml up -d |
Comprobaremos que ahora sí hemos redireccionado el puerto 3306 interno de la imagen al 3333 externo:
1 |
docker compose -f docker-compose.yml ps |
Acceso remoto a MySQL/MariaDB de Docker mediante MySQL Workbench
Desde un cliente de MySQL/MariaDB, como por ejemplo MySQL Workbench, crearemos una nueva conexión, con los siguientes datos:
- Hostname: indicaremos la IP del equipo Linux (o Windows) anfitrión de Docker, el que contiene Docker con las imágenes de la base de datos y Pandora FMS.
- Port: en este caso, puesto que hemos definido el puerto 3333, lo indicaremos aquí.
- Username: indicaremos el nombre de usuario de acceso a la base de datos. Por defecto, para el fichero YML de Pandora, hemos dejado «pandora».
Estableceremos la conexión y comprobaremos que, efectivamente, tenemos acceso remoto a la base de datos MySQL/MariaDB de nuestro contenedor Docker: