当前位置: 首页 > 知识库问答 >
问题:

如何从docker容器localhost?[重复]

常自强
2023-03-14

我有一个运行在docker容器中的dotnet API。

我想从这个API访问执行容器的本地主机上的PostgreSQL数据库。在Windows上,我使用host.docker.internal运行了这个连接到本地主机数据库的应用程序,但在linux上它不起作用。

我的连接字符串类似于:

“Server=host.docker.internal;Port=5432;Database=DbName;User Id=DbUser;Password=MyPassword;”

我试图通过添加p--add-host=host.docker.internal: host-网关来运行docker,但它也不起作用。

我使用pg_isready测试了我的PostgreSQL连接,如下所示。我的连接正在工作:

pg_isready-d dbname-h myHost-p 5432-U dbUserName

我错过了什么?


共有2个答案

秦鹏飞
2023-03-14

--add host=host.docker.internal:主机网关,但也不起作用。

在本例中,您可以使用dockerrun--addhostmypgserver:$(主机名-I | awk'{print$1}')…

您的连接字符串:

“服务器=mypgserver;端口=5432;数据库=DbName;用户Id=DbUser;密码=MyPassword;”

此方法避免使用--network=“host”,如果不小心,可能会导致端口冲突。

司徒锐进
2023-03-14

容器放在网络主机中,通过localhost127.0.0.1访问服务

docker run --network="host"

或运行桥接网络(默认)并通过IP地址访问主机:

docker network inspect <name>
"IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1" <--- host IP
"Containers": {
            "048a..": {
                "Name": "container",
                "EndpointID": "81de..",
                "MacAddress": "02:42:..",
                "IPv4Address": "172.18.0.5/16", <-- container IP
                "IPv6Address": ""
 类似资料:
  • 我对docker容器(它是一个与Redis数据库通信的Node.js API)发出HTTP请求时遇到问题,该容器在VM(docker Toolbox)中运行。 我已经建立了我的Dockerfile,并docker-compose.yml了所需的端口。构建它们并成功运行(“启动”)它们。 雷迪斯。js 服务器js(express.js) 我成功地构建了容器,然后使用HTTP请求服务测试GET。因为我

  • 问题内容: 我在本地主机上运行mysql,可以通过运行以下命令进行连接: 我还使用以下命令运行了Docker容器: 我想从docker容器访问Mysql数据库。所以我也从docker容器输入: 但这给了我错误: 我究竟做错了什么?端口似乎是正确的。 编辑1在码头工人的 输出: 问题答案: 即使将MySQL配置为侦听所有接口,然后从容器通过非环回IP访问MySQL,您仍可能会发现Docker的路由,

  • 首先我看了这些链接 从localhost连接到Docker MySQL容器? 但作为docker的初学者。这对我没有帮助。 您需要知道的是: 是的,我需要localhost。我正在开发一个直接与数据库交互的应用程序。它创建/删除用户权限,并允许一些用户从远程访问以有限的权限访问。初始化时,应用程序将删除默认的远程访问根和伪造用户,并授予他们对localhost的完全权限。 我用的是https://

  • 我已经使用docker工具箱在视窗机器上安装了docker。我也在我的视窗机器上安装了mysql,服务器运行在端口3306上(localhost-127.0.0.1-在docker机器之外)。我在一个名为“micra-workq-svc”的docker网络内部的docker容器中运行一个冲刺启动应用程序,我希望在docker内部运行的应用程序连接到本地主机。我花了几个小时在谷歌上搜索,没有一个链接

  • 我有一个docker集装箱在运jenkins。作为构建过程的一部分,我需要访问在主机上本地运行的web服务器。有没有办法将主机web服务器(可以配置为在端口上运行)公开给jenkins容器? 我在Linux机器上运行docker。 更新: 除了下面的@larsks answer之外,为了从主机获取主机IP的IP地址,我执行以下操作:

  • 我正在使用 docker-compose 来构建环境,并且我想从正在运行的 docker 容器连接到运行 docker 的主机系统上的本地主机。IE,我在Windows 10上,正在127.0.0.1:8080上运行Spring启动应用程序,并且有docker工具箱,其运行容器应该在Spring启动应用程序上发送POST到RestAPI。当我向我的网络接口的IP发送POST请求时,我已经找到了解决