Docker:无法连接到主机的容器

我尝试使用docker-compose来运行一个由2个容器组成的app:akka app和postgresql。 这里是yaml文件:

 version: "3" services: api: image: akka-app:latest ports: - "9000:5000" db: image: postgres-db:latest 

docker-compose up命令后,我看到使用docker ps命令启动并运行了容器:

 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 65326e5a9677 akka-app:latest "java -cp /..." 40 minutes ago Up 23 seconds 0.0.0.0:9000->5000/tcp samplecompose_api_1 1f86273c4f9a postgres-db:latest "docker-ent..." 19 hours ago Up 23 seconds 5432/tcp samplecompose_db_1 

但是,当我尝试通过GET请求从主机访问akka-app0.0.0.0:9000/statuslocalhost:9000/status我在邮递员中找回“拒绝连接”错误。

额外的信息:

  • Docker版本17.06.0-ce,build 02c1d87
  • docker合成版本
  • 1.14.0,build c7bdf9e MacOS Sierra 10.12.5

akka-app容器的networking设置:

 "NetworkSettings": { "Bridge": "", "SandboxID": "5b5b322ffb0fb881317f8cb4e69b8fd887566b8c5b73940174aabace35d816f8", "HairpinMode": false, "LinkLocalIPv6Address": "", "LinkLocalIPv6PrefixLen": 0, "Ports": { "5000/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "9000" } ] }, "SandboxKey": "/var/run/docker/netns/5b5b322ffb0f", "SecondaryIPAddresses": null, "SecondaryIPv6Addresses": null, "EndpointID": "", "Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "IPAddress": "", "IPPrefixLen": 0, "IPv6Gateway": "", "MacAddress": "", "Networks": { "pinpointcompose_default": { "IPAMConfig": null, "Links": null, "Aliases": [ "api", "65326e5a9677" ], "NetworkID": "925c8379c6d5b334177d7d198d1d38e29983903474183bee5734df9d30ab9810", "EndpointID": "c7c37f545b00c6a19863315858e93a79f10b54b5675dc2cb8704d2f2f9b2bb1c", "Gateway": "172.18.0.1", "IPAddress": "172.18.0.2", "IPPrefixLen": 16, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "02:42:ac:12:00:02" } } } 

更新:

docker构成输出:

 docker-compose up Starting samplecompose_api_1 ... Starting samplecompose_api_1 Starting samplecompose_db_1 ... Starting samplecompose_api_1 ... done Attaching to samplecompose_db_1, samplecompose_api_1 db_1 | LOG: database system was shut down at 2017-07-06 08:54:56 UTC db_1 | LOG: MultiXact member wraparound protections are now enabled api_1 | 09:04:26.030 [default-akka.actor.default-dispatcher-3] INFO akka.event.slf4j.Slf4jLogger - Slf4jLogger started api_1 | 09:04:27.472 [default-akka.actor.default-dispatcher-4] INFO sample-service - Bound to /0.0.0.0:5000 

问题出在一个安装在我的笔记本电脑上的旧的VirtualBox上。 所以,虽然它被安装,我不能通过localhost访问正在运行的docker容器…你可以阅读更多关于官方docker的网站

从笔记本电脑上卸载VirtualBox后,重新启动Docker应用程序,重新启动terminal会话,使用localhost访问容器是不真实的。

我使用的是从docker-machine ip default获得的IP,而不是本地主机。 但这不是好的方法。

所以再次确保你满足所有的要求。