【问题标题】:Connection refused on nginx docker containernginx docker容器上的连接被拒绝
【发布时间】:2020-11-09 19:27:38
【问题描述】:

我已经在 macOS 中安装了Docker Toolbox,我正在关注 Docker 在deploying Nginx 上的简单教程。

我已执行docker run 并确认我的容器已创建:

docker run --name mynginx1 -P -d nginx
docker ps
40001fc50719  nginx  "nginx -g 'daemon off"  23 minutes ago  Up 23 minutes  0.0.0.0:32770->80/tcp, 0.0.0.0:32769->443/tcp  mynginx1

但是当我curl http://localhost:32770 时,我得到一个连接被拒绝的错误:

curl: (7) Failed to connect to localhost port 32770: Connection refused

我正在努力看看我可能在这里错过了什么。鉴于我使用的是 macOS,是否需要执行额外的步骤?

【问题讨论】:

  • 检查您的 nginx 日志和/或增加详细程度。如果我没记错的话,这是一个 nginx 问题,其中 nginx 试图反向 dns 查找或类似的东西。

标签: macos nginx docker


【解决方案1】:

问题是您的DOCKER_HOST 未设置为 localhost,您需要使用 docker 机器的 IP 地址,因为您使用的是 Docker Toolbox:

docker-machine ip default# 应该返回你的 IP 地址。

更多信息请参见Docker Toolbox Docs

【讨论】:

  • 正确。谢谢,迈克尔。
【解决方案2】:
docker-machine ip default
xxx.docker.machine.ip

然后

curl http://xxx.docker.machine.ip:32770

【讨论】:

    【解决方案3】:

    如果您在 OS X 10.10.3 Yosemite 或更新版本上使用 Docker for Mac,则无需担心 docker-machine 或 docker toolbox 或 DOCKER_HOST。

    只需在运行命令 local-port:container-port 上映射端口

    docker run --name my-web  -p 8080:80
    

    【讨论】:

      【解决方案4】:

      在 Mac 10 以上的版本中,您可以尝试使用“docker.for.mac.host.internal”而不是“localhost”

      编辑:docker.for.mac.host.internal 已弃用,他们切换到 host.docker.internal。 参考:https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workarounds

      【讨论】:

      • 我相信它是 docker.host.internal。另外,请在这样的答案中提供对文档的参考
      猜你喜欢
      • 1970-01-01
      • 2019-01-28
      • 2014-09-23
      • 1970-01-01
      • 2021-06-27
      • 1970-01-01
      • 2017-05-20
      • 2021-07-08
      • 1970-01-01
      相关资源
      最近更新 更多