Docker curl:(7)无法连接到本地主机端口80:连接被拒绝

文章讨论了在Docker容器内部使用`curllocalhost`或外部域名失败的问题,分析了localhost在容器中的含义差异,以及如何解决由于网络转发导致的连接拒绝。建议检查PHP容器内的网络设置和使用docker-compose.yml中的名称进行容器间调用。
摘要由CSDN通过智能技术生成

Docker curl:(7)无法连接到本地主机端口80:连接被拒绝

我从本地主机执行

$ curl localhost
or
$ curl http://www.xxcms.com
and response its ok.

我从容器名称" php"执行:

 curl localhost
curl: (7) Failed to connect to localhost port 80: Connection refused
curl www.xxcms.com
curl: (7) Failed to connect to www.xxcms.com port 80: Connection refused

从Docker容器故障连接时,如果在Docker容器外部连接则可以,这是什么问题?

原因

localhost(即127.0.0.1)始终表示与命令当前正在运行的主机相同。因此,在您的主机上,它将调用您的主机,但是在容器中运行时,它将调用您的容器。

我将假定您有一个将www.xxcms.com域指向localhost的DNS解析器。 nginx容器将主机的端口80转发给它,因此就好像它在主机上运行一样。因此,当您从主机调用它时,它会成功,因为调用转到了主机的端口80。

但是,当您在php容器内调用它时,它不是在调用主机,而是在php容器的端口80上调用,并且您的php容器内没有运行的网络服务器。如果您在nginx容器中进行了此调用,则它将起作用。

您应该问自己,为什么您的php容器需要调用您的nginx容器,这对我来说听起来很奇怪,因为通常nginx只会将"工作"转发给php。例如,您能否只创建一个您想要的PHP脚本并直接调用它?

如果确实需要调用nginx,请记住,来自同一docker-compose.yml文件的容器可以按名称相互调用,因此您可以仅使用nignx作为主机名。

解决方案

在php容器中,没有虚拟主机。 如果我在Docker容器php中添加php /etc/hosts 172.17.0.3(docker nginx的IP,查找命令docker inspect nginx | grep “IPAddress”),其工作原理…………

172.17.0.3   www.xxcms.com
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当你在 Docker 中启动 Nginx 并尝试使用 curl 命令访问 127.0.0.1 时,可能会出现 "curl: (56) Recv failure: Connection reset by peer" 的错误。这个错误通常表示在客户端和服务器之间的连接被对等方(peer)重置。 有几种可能的原因导致这个问题。首先,你需要确保 Nginx 服务已经正常启动并监听了正确的端口。你可以使用命令 "docker ps" 来查看正在运行的容器和它们所映射的端口。如果端口映射没有配置正确,那么在通过 curl 访问时就会出现连接重置的问题。 另一个可能的原因是你在 Docker 容器内部访问本地主机的 IP 地址。在 Docker 中,容器内部的网络是隔离的,它们具有自己的 IP 地址空间。因此,当你在容器内尝试访问本地主机的 IP 地址时,容器会认为这是一个外部连接,并尝试通过网络连接到该地址。然而,由于容器没有直接访问主机的网络权限,所以会导致连接重置的问题。 为了解决这个问题,你可以尝试使用容器的 IP 地址或容器名称来代替本地主机的 IP 地址。你可以使用命令 "docker inspect <container_id>" 来获取容器的 IP 地址,然后使用该地址进行 curl 请求。另外,你也可以尝试在容器内部使用主机网络模式来解决该问题。 综上所述,当你在 Docker 容器中启动 Nginx 并尝试使用 curl 访问 127.0.0.1 时,出现 "curl: (56) Recv failure: Connection reset by peer" 错误可能是由于端口映射配置不正确或在容器内部访问本地主机 IP 地址导致的。你可以检查端口映射是否正确配置,并尝试使用容器的 IP 地址或容器名称进行 curl 请求来解决该问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [【docker启动nginx无法访问】curl: (56) Recv failure: Connection reset by peer](https://blog.csdn.net/qq_43680114/article/details/131800351)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [curl: (56) Recv failure : Connection reset by peer](https://blog.csdn.net/Dontla/article/details/131798085)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值