我运行:docker run -p "9999:80" nginx并尝试使用以下地址访问web服务器:172.17.0.2:9999。我从docker inspect [container_id]那里得到了这个IP
"NetworkSettings": {
"Bridge": "",
"SandboxID": "877eb750a0f35037f0b9dff2b6bd95f7dd4aaf80ae0ed8cf65e20ad8aeb85132",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"80/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "9999"
}
]
},
"SandboxKey": "/var/run/docker/netns/877eb750a0f3",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "2599dc8c2311725e9816fc30e60a86550cb42887871a921365e3df866427464e",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:02",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "ffc037f862047b118824b8d322aab771ba75a009881959461be577ffebb42a80",
"EndpointID": "2599dc8c2311725e9816fc30e60a86550cb42887871a921365e3df866427464e",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:02",
"DriverOpts": null
}
}
}但这不像预期的那样有效。如果我从主机上选择172.17.0.2,我就得不到响应。
有什么问题吗?docker-toolbox太麻烦了,因为我的Windows10版本不受docker的支持。
发布于 2018-09-24 11:26:10
因为您使用docker run -p 9999:80启动了容器,所以可以在公共端口9999上VM的IP地址上访问它。docker-machine ip会告诉您IP地址(但通常是192.168.99.100)。因此,尝试http://192.168.99.100:9999/作为一个URL到达容器。
容器内部的IP地址并不特别有用。他们的一个重要问题是他们无法从其他主机处联系到他们。在Docker环境中,与Docker相关的所有内容实际上都在虚拟机中运行,而您的主机系统就是这方面的“其他主机”。还请注意,如果您确实有机会使用它(或者更经常地使用容器间DNS通过它的docker run --name到达另一个容器),那么您需要服务器在容器内侦听的端口,而不是发布的端口:从另一个容器中可以使用http://nginx_container_name:80/。
https://stackoverflow.com/questions/52477612
复制相似问题