docker无法访问localhost的一种解决方法

本文分享了在使用Docker Toolbox遇到的网络访问问题及解决方案,指出应使用192.168.99.100替代宿主机IP,以确保与virtualbox虚拟机内的Docker容器正确通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果你使用的不是toolbox,可以关掉这个页面了...

如果你使用的是toolbox,请使用192.168.99.100加你的的接口

因为toolbox使用了virtualbox虚拟机,相当于包了一层,而不是使用宿主的ip地址(例如127.0.0.1)

参考回答 https://segmentfault.com/q/1010000006138817

 

 

闲谈:

之所以用docker,是因为参加了ThoughtWorks的一场测试技术的分享会,需要使用docker配置环境,然后遇到了这个问题...

会上当时没解决,后来当天会议结束的时候ThoughtWorks的一个老哥提了下,用192.168.99.100试试。

个人感觉ThoughtWorks这种技术分享还是蛮好的(是免费的噢!),虽然我也是只是囫囵吞枣,但是对ThoughtWorks的项目的整体测试方案也有了个大概的了解,也算是提升了自己的视野。

不得不说还是要多出去看看,不然连别人办公楼的电梯都不会用(第一次见到用显示屏的电梯...),ThoughtWorks的办公环境也不错!

 

### Docker Desktop 无法连接到主机解决方案 当遇到 Docker Desktop 无法连接到主机的情况时,这通常是因为容器与宿主机之间的网络通信存在问题。由于 Docker Desktop 实现网络的方式,在主机上看不到 `docker0` 接口,该接口实际位于虚拟机内部[^1]。 为了使容器能够访问宿主机的服务,可以采用以下几种方法: #### 方法一:使用特殊 IP 地址 在 Windows 和 Mac 上运行 Docker Desktop 时,可以通过特定的 IP 地址来访问宿主机服务。对于大多数情况而言,IP 地址为 `host.docker.internal` 可用于从容器内访问宿主机上的服务[^3]。 ```bash ping host.docker.internal ``` 此命令可以在容器终端执行以测试连通性。 #### 方法二:端口映射 另一种常见做法是利用端口转发机制。通过定义 `-p` 参数将容器内的端口暴露给外部世界并绑定至本地机器相应端口,从而间接实现了对宿主机资源的访问功能[^2]。 例如启动一个 Web 应用程序监听8080端口: ```bash docker run -d -p 8080:80 my_web_app_image ``` 此时可以直接在浏览器输入 http://localhost:8080 来查看应用界面。 #### 方法三:自定义桥接网络 创建一个新的用户定义网桥,并设置合适的子网掩码以及默认路由规则,使得新加入该网络下的各个成员之间均能互相发现彼此的存在。 ```bash docker network create --subnet=192.168.1.0/24 custom_bridge_network docker run -it --network=custom_bridge_network alpine ash ``` 以上措施有助于改善Docker Desktop环境下容器同宿主机间的交互体验,提高开发效率的同时也增强了系统的稳定性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值