AI 摘要

前言 在使用Docker部署应用时,如果需要连接宿主机上的数据库,直接使用localhost(127.0.0.1)会导致连接失败。这是因为Docker容器内部的网络与宿主机的网络是隔开的,因此需要通过网桥来连接宿主机网络。主要有两种方法可供选择:1. 使用主机内网地址;2. 使用Docker网桥。 操作方法 1. 使用主机内网地址:通过命令ifconfig查找主机内网地址,将需要连接的服务地址更改为此内网地址即可。 2. 使用Docker网桥:同样使用ifconfig查找Docker网桥地址,将连接服务的host更改为此网桥地址,便可以实现连接。 总结 Docker连接宿主机网络的问题比较常见,网络上的教程虽多,但实际效果可能不尽人意。希望以上两种方法能帮助到遇到类似问题的用户。

前言

Docker
Docker

在使用docker部署应用时,如果应用需要连接到数据库,而数据库部署在宿主机上,此时如果在docker内部使用localhost(127.0.0.1)连接宿主机的数据库,会发出报错,连接失败。

连接失败的原因是,在docker内部使用localhost指的是连接到docker容器内部自己的环回地址,而不是主机的环回地址,因为docker容器内部的网络和主机的网络是完全隔开的,现在就需要使用到网桥来连接到宿主机网络,通过网桥连接到主机服务的办法一共有俩种:1.使用主机内网地址 2.使用docker网桥

操作方法

1.使用主机内网地址

首先输入命令ifconfig 查看内网地址

主机内网地址

inet后方跟着的10.0.16.3即是主机的内网地址(不同主机内网ip不同,有可能是192开头或者10开头,当然也可能直接没有)

将docker服务需要连接的host更改为此内网地址,即可实现连接部署在主机的服务

2.使用docker网桥

仍然是ifconfig 查看docker网桥位置

docker网桥地址

inet后面跟着的172开头的地址即是docker网桥地址,172.18.0.1和172.17.0.1(目前博主发现这两个地址都可以作为网桥使用,并未发现实质区别)

将docker服务需要连接的host更改为此网桥地址,即可实现连接部署在主机的服务

ps:在这种情况,可以将172.18.0.1和172.17.0.1直接视为宿主机的127.0.0.1环回地址

总结

docker连接到宿主机网络是一个经常遇到但略微有一点容易疑惑的问题,网上的教程很多比如使用host.docker.internal来桥接主机网络,博主发现这个办法没办法连接到主机网络,所以折腾了一会儿发现了以上俩种办法

此教程是本站文章:使用Docker部署容器项目时,无法连接Redis服务器的解决方案。 (sereniblue.com)的进阶和简化

如果您也遇到了docker容器连接主机网络的问题,希望教程对您有帮助。