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

Aur*_*n W 4 macos nginx docker

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

web:
  image: nginx:latest
  ports:
    - "8080:80"
Run Code Online (Sandbox Code Playgroud)

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

但问题是在我的容器中访问.我不知道ip使用了什么.我试图找到IP与docker psdocker inspect ...:

"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"
  }
}
Run Code Online (Sandbox Code Playgroud)

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

为什么它不适用于ip?

ldg*_*ldg 5

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

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

不幸的是,由于OSX中的限制,我们无法将流量路由到容器,也无法将容器路由回主机.

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