设置 Docker 容器以使用本地数据库

设置 Docker 容器以使用本地数据库

我正在尝试设置一个 Docker 容器来使用本地数据库。

图片是这个https://hub.docker.com/r/tuxgasy/dolibarr/它还建议创建一个mariadb容器,并将其链接到该容器。

我想配置 Dolibarr 容器以使用mariadb我主系统上已有的数据库,该数据库是从我的发行版的主存储库安装的。

这是我第一次尝试设置一个可以运行的 Docker 应用程序,而且我并不是数据库维护方面的专家,所以我有点迷茫。

我该怎么做?请尽可能保持说明清晰详细。

我的系统是完全更新的 openSUSE Tumbleweed。

答案1

有三种方法:

  1. 使用 --net=host 选项。此网络模式本质上意味着容器可以直接访问 localhost,您现在可以访问 localhost:3306。以下是命令

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

    然后使用以下命令连接到 mariadblocalhost:3306

  2. 将 mariadb 套接字挂载到 docker 容器并通过套接字连接到 mariadb。例如,如果您将套接字的位置配置为 /var/run/mysqld/mysqld.sock,那么您可以挂载并将其用作连接点。

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

    /mariadb_socket/mysqld.sock然后通过应用程序的套接字连接到 mariadb

  3. 使用 docker 主机的 ip。首先获取 docker 网络上的主机 ip 地址(在 linux 中输入 ip addr show并查找docker0 ip)通常是这样的172.17.0.1(您的里程可能会有所不同)。然后您应该能够使用该 IP 地址连接到 MariaDB,例如172.17.0.1:3306

笔记:... 表示您可能已经使用的任何其他选项

答案2

从 Docker v18.03+ 开始,你可以使用主机.docker.internal主机名来连接到您的 Docker 主机。

这是用于开发目的,并且不能在 Docker Desktop 之外的生产环境中使用。

关联

答案3

我创建了一个 Docker 容器来做这件事https://github.com/qoomon/docker-host

然后,您只需使用容器名称 dns 从容器内部访问主机系统即可,例如 curlhttp://dockerhost:9200

答案4

请记住,qoomon/docker-host 并不比其他方法更好。您必须在 docker 主机上配置应用程序以绑定和监听 docker 桥,然后才能访问它。在我看来,qoomon/docker-host 只是在网络数据包中添加了额外的一层,并没有带来真正的优势

这是人们似乎遗漏的 qoomon/docker-host README 副本。“在 Linux 系统上,如果您想通过 docker-host 容器访问主机应用程序,除了 localhost(127.0.0.1) 之外,您还必须将主机应用程序绑定到桥接网络网关。使用以下 docker 命令获取桥接网络网关 IP 地址”

相关内容