docker-machine:无法从主机访问容器的 Web 服务器

新手上路,请多包涵

我刚刚使用自制软件在我的 Mac 上安装了带有 Docker-Toolbox 的 Docker:用自制软件 安装 docker

在使用 Rails、Postgres 和启动 docker-compose 创建和配置容器后,一切看起来都很好,但我无法从主机访问网络服务器。

的输出

$ docker-compose up

dummy_1    | I, [2016-03-30T14:55:53.130639 #6]  INFO -- : listening on addr=0.0.0.0:8000 fd=10

当我在谷歌浏览器中输入网址 http://0.0.0.0:8000/ 我得到

This site can’t be reached

0.0.0.0 refused to connect.
ERR_CONNECTION_REFUSED

所以我尝试了

$ docker-machine env dummy

具有以下输出:

 export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/choi/.docker/machine/machines/dummy"
export DOCKER_MACHINE_NAME="dummy"

当我在 Chrome 中尝试时 http://192.168.99.100:2376 我下载了一个空白文件。为什么会这样?我期待我的 Rails 应用程序的默认问候页面。

原文由 StandardNerd 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 329
2 个回答

192.168.99.100 是您的 Docker 主机的 IP,在这种情况下。您需要公开容器的端口,然后您就可以从外界连接到它。

我不熟悉 Docker Compose,但您发布的日志 表明 端口 8000 已暴露。因此,请尝试 http://192.168.99.100:8000

(原因 http://192.168.99.100:2376 不起作用是因为这是Docker守护进程本身的地址和端口,不是基于HTTP的。至于 0.0.0.0 :这是您的 Web 服务器正在容器 内部 进行侦听,并等同于其中的所有外部连接。但是,如果没有暴露任何端口,就无法进入!)

原文由 Xophmeister 发布,翻译遵循 CC BY-SA 3.0 许可协议

对于那些尝试过 localhost:4000教程 所述但失败的人:

输入这个:

 $ docker-machine env

你会看到类似的东西:

 export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/choi/.docker/machine/machines/dummy"
export DOCKER_MACHINE_NAME="dummy"

所以你得到了 IP: 192.168.99.100 。然后只需访问 192.168.99.100:4000 ,如 ip:your_port

原文由 ch271828n 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进