Docker:无法从主机连接到容器
我尝试使用Docker:无法从主机连接到容器,docker,docker-compose,Docker,Docker Compose,我尝试使用docker compose来运行一个包含两个容器的应用程序:akka应用程序和postgresql。 以下是yaml文件: version: "3" services: api: image: akka-app:latest ports: - "9000:5000" db: image: postgres-db:latest 执行docker compose up命令后,我看到容器正在使用docker ps命令启动并运行: CONTA
docker compose
来运行一个包含两个容器的应用程序:akka应用程序和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应用程序时,0.0.0:9000/status
或localhost:9000/status
返回邮差中的“拒绝连接”错误
额外资料:
- Docker版本17.06.0-ce,版本02c1d87
- docker编写版本
- 1.14.0,构建c7bdf9e MacOS Sierra 10.12.5
"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 compose输出:
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应用程序并重新启动终端会话之后,使用localhost
访问容器是不真实的
我使用了从docker机器IP default
获得的IP,而不是本地主机。但这不是好办法
因此,再次确保您满足所有要求。您也可以粘贴docker compose日志吗?@dgulabs是的。就3分钟。我将把日志添加到主要问题中作为更新:)wget localhost:9000也失败了吗?您是否可以尝试通过docker run在docker compose外部运行容器,并通过“-p IP:host\u port:container\u port”绑定到特定地址?您也可以从容器内部尝试netstat:docker exec-ti netstat-pant@dgulabs以下是我通过运行
netstat
:docker exec-ti 65326e5a9677 netstat-pant rpc error:code=2 desc=oci运行时错误:exec失败:container\u linux.go:247:启动容器进程导致“exec:\”netstat\“:在$PATH中找不到可执行文件”