Configurar un contenedor Docker para trabajar con una base de datos local

Configurar un contenedor Docker para trabajar con una base de datos local

Estoy intentando configurar un contenedor Docker para que funcione con una base de datos local.

La imagen es estahttps://hub.docker.com/r/tuxgasy/dolibarr/y sugiere crear también un mariadbcontenedor y vincularlo a él.

Me gustaría configurar el contenedor Dolibarr para usar la mariadbbase de datos que ya tengo en mi sistema principal, que se instaló desde el repositorio principal de mi distribución.

Es la primera vez que intento configurar una aplicación Docker que funcione y no soy tan experto en el mantenimiento de bases de datos, así que estoy un poco perdido.

¿Cómo puedo hacer esto? Mantenga las instrucciones lo más claras y detalladas posible.

Mi sistema es un openSUSE Tumbleweed completamente actualizado.

Respuesta1

Hay tres maneras:

  1. Utilice la opción --net=host. Este modo de red esencialmente significa que el contenedor tiene acceso directo a localhost y ahora puede acceder a localhost:3306. Aquí está el comando

    docker run --net=host ... tuxgasy/dolibarr

    Luego conéctate a mariadb conlocalhost:3306

  2. Monte el socket mariadb en el contenedor acoplable y conéctese a mariadb a través del socket. Por ejemplo, si configura la ubicación del socket para que sea /var/run/mysqld/mysqld.sock, entonces podría montarlo y usarlo como su punto de conexión.

    docker run -v /var/run/mysqld:/mariadb_socket ... tuxgasy/dolibarr

    Luego conéctese a mariadb a través del socket /mariadb_socket/mysqld.sockde su aplicación

  3. Utilice la IP del host de la ventana acoplable. Primero obtenga la dirección IP del host en la red Docker (en Linux, escriba ip addr showy busque elip docker0). Esto suele ser algo así como172.17.0.1(Su experiencia puede ser diferente). Entonces deberías poder usar esa dirección IP para conectarte a mariadb, por ejemplo.172.17.0.1:3306

NOTA:... significa cualquier otra opción que ya estés usando

Respuesta2

A partir de Docker v18.03+ puedes usar elhost.docker.internonombre de host para conectarse a su host Docker.

Esto es para fines de desarrollo y no funcionará en un entorno de producción fuera de Docker Desktop.

enlace

Respuesta3

He creado un contenedor acoplable para hacer exactamente eso.https://github.com/qoomon/docker-host

Luego puede simplemente usar el nombre del contenedor dns para acceder al sistema host desde dentro de un contenedor, por ejemplo, curlhttp://dockerhost:9200

Respuesta4

Tenga en cuenta que qoomon/docker-host no es mejor que cualquier otro método. Debe configurar su aplicación en el host de Docker para vincular y escuchar el puente de Docker antes de que sea accesible. En mi opinión, qoomon/docker-host simplemente agrega una capa adicional al paquete de red, lo que no proporciona ninguna ventaja real.

Esta es la copia de README para qoomon/docker-host que la gente parece extrañar. "En los sistemas Linux, debe vincular sus aplicaciones host a la puerta de enlace de la red puente además del host local (127.0.0.1), si desea acceder a ellas a través del contenedor Docker-Host. Utilice el siguiente comando de Docker para obtener la dirección IP de la puerta de enlace de la red puente".

información relacionada