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 mariadb
contenedor y vincularlo a él.
Me gustaría configurar el contenedor Dolibarr para usar la mariadb
base 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:
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 con
localhost:3306
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.sock
de su aplicaciónUtilice 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 show
y 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.
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".