微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

macos – Mac上的Docker Beta:无法使用ip访问nginx容器

我为osx安装了docker-beata(https://beta.docker.com/).
接下来,我使用此文件docker-compose.yml创建了一个文件夹:

web:
  image: Nginx:latest
  ports:
    - "8080:80"

之后,我使用了这个命令:docker-compose up.
容器开始成功.

但问题是在我的容器中访问.我不知道ip使用了什么.
我尝试用docker ps和docker检查ip …:

"Networks": {
  "bridge": {
    "IPAMConfig": null,
    "Links": null,
    "Aliases": null,
    "NetworkID": "6342cefc977f260f0ac65cab01c223985c6a3e5d68184e98f0c2ba546cc602f9",
    "EndpointID": "8bc7334eff91d159f595b7a7966a2b0659b0fe512c36ee9271b9d5a1ad39c251",
    "Gateway": "172.17.0.1",
    "IPAddress": "172.17.0.2",
    "IPPrefixLen": 16,
    "IPv6Gateway": "",
    "GlobalIPv6Address": "",
    "GlobalIPv6PrefixLen": 0,
    "MacAddress": "02:42:ac:11:00:02"
  }
}

所以我尝试使用http://172.17.0.2:8080/来访问,但是我有一个ERR_CONNECTION_TIMED_OUT错误.
但是,如果我使用http:// localhost:8080 /,我可以访问我的容器!
(但我的本地主机已经在我的mac上使用我的本机配置,所以如果我想使用localhost,我必须停止我的原生apache).

为什么它不适用于ip?

解决方法:

正如@ Javier-Segura所提到的,在Linux上使用原生Docker你应该可以通过它的IP和端口来访问容器,所以在你的情况下http://172.17.0.2:80 – 8080端口将在主机IP上.

使用Docker for Mac Beta,它似乎对容器的工作方式不同.它随着每次发布都有所改变,但现在看来你无法通过传统方式通过ip到达容器.

Unfortunately, due to limtations in OSX, we’re unable to route traffic
to containers, and from containers back to the host.

您最好的选择是使用所提到的不同的非冲突端口.您可以为不同的环境使用不同的Compose配置文件,因此,如上所示,如果需要,请使用8081进行开发,使用8080进行生产.你可以通过docker-compose -f docker-compose.yml -f production.yml up -d开始生产Compose,其中production.yml具有该环境的覆盖.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐