当前位置: 首页 > 面试题库 >

docker nginx容器未从外部接收请求,连接被拒绝

衡子安
2023-03-14
问题内容

我有一个运行Nginx的容器:# docker run --name mynginx1 -P -d nginx;

并通过docker ps以下方式获取了其端口信息: 0.0.0.0:32769->80/tcp, 0.0.0.0:32768->443/tcp

然后,我可以从容器中获取响应(ID:c30991a04b2f):

  • docker exec -i -t c3099 bash

  • curl http://localhost=>返回默认index.html页面内容,它可以正常工作

但是,当我curl http://localhost:32769在容器的外部制作时,得到了以下信息:

curl: (7) failed to connect to localhost port 32769: Connection refused

我在docker版本1.9.0的Mac上运行;Nginx最新

有谁知道是什么原因造成的?有什么帮助吗?谢谢


问题答案:

如果在OSX上,则可能是在docker环境中使用VirtualBox VM。

确保已将端口32769转发到您的实际主机(mac),以便该端口从本地主机可见。
这对于旧的boot2docker或新的docker计算机均有效。

VBoxManage controlvm "boot2docker-vm" --natpf1 "tcp-port32769  ,tcp,,32769,,32769"
VBoxManage controlvm "boot2docker-vm" --natpf1 "udp-port32769 ,udp,,32769,,$32769

controlvm如果虚拟机正在运行,modifyvm则该虚拟机是否已停止)
(用boot2docker-vm您的虚拟机名称替换“ ”,请参见docker-machine ls

我建议不要使用-P,而是使用静态端口映射-p xxx:80 -p yyy:443
这样,您可以使用固定值一次执行该端口转发。

当然,您可以直接通过 docker-machine ip vmname

curl http://$(docker-machine ip vmname):32769


 类似资料:
  • 试图在localhost中建立从app容器到mysql容器的连接,出现连接拒绝异常 我们正在采取一种docker的方法来调用rest api服务来采用微服务的方法。我们正在建立应用程序容器和mysql容器之间的连接,同时我们编写了一个docker-compose文件,创建了mysql容器和应用程序容器,为这两个容器公开了端口。下面是运行docker-compose文件docker-compose

  • 因此,我试图发送一个数据包,但我不断得到这个错误 任何帮助将是真棒! 谢谢! 错误消息:不允许发送或接收数据的请求,因为套接字未连接,并且(使用sendto调用在数据报套接字上发送时)未提供地址 代码: }

  • 我有需要调用Rest服务的应用程序,以进行身份验证过程。该服务和我的应用程序在同一台服务器中。我使用Spring RestTemboard来调用它。当它在localhost中测试时,它可以完美地工作。但是当我将其部署到云服务器(在本例中为J弹性)时,我得到了这个错误: 所有代码如下所示:http://docs.spring.io/spring/docs/3.0.x/javadoc-api/org/

  • 我正在运行2个spring boot应用程序:一个客户端和rest-api。客户机与rest-api通信,rest-API与mongodb数据库通信。所有3层都在docker容器中运行。 我启动容器,通常指定docker文件中公开的端口,并将它们映射到主机上的端口,例如:-p 7070:7070,其中7070是docker文件中公开的端口。 当我通过< code > Java-jar[applic

  • 我试图为Nginx+PHP(Laravel)+MySQL构建docker组合容器,但我不断收到连接拒绝错误 Docker-compose.yml 在中,我有一个全新的Laravel应用程序,它具有基本的SQL设置 所有容器都运行时没有错误,我可以使用以下方法连接到MySQL容器 但当我试图从浏览器访问或将ssh直接导入php容器时,我总是得到错误2002。 我有nginx和mysql运行在服务器上

  • 我花了几个小时在谷歌上搜索,但似乎找不到正确的路径/文档来帮助我走上正确的道路:( 前提很简单。 我有一个在localhost:8080上打开的springboot应用程序。我有一个在localhost:15672上打开的rabbitmq服务器 当这两个应用程序都运行时,springboot应用程序将通过一些用户交互向Rabbitmq服务器发送消息。当我对这两个独立的服务进行dockerize(容