docker-compose ps Name -6ren">
gpt4 book ai didi

docker - 如何从 Windows 中的 Docker 容器访问 "http://localhost"?

转载 作者:IT老高 更新时间:2023-10-28 21:26:49 25 4
gpt4 key购买 nike

我有一组使用 Docker 在 Windows 10 中运行的容器,这是 docker-compose ps 的输出:

> docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------------------------------------
db_mysql docker-entrypoint.sh mysqld Up 3306/tcp
elk /usr/bin/supervisord -n -c ... Up 0.0.0.0:81->80/tcp
php71-fpm-nginx /config/bootstrap.sh Up 443/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:9001->9001/tcp

这是 docker inspect 的输出:

> docker inspect php71-fpm-nginx
[
{
...
"NetworkMode": "anotherlampdocker_default",
"PortBindings": {
"80/tcp": [
{
"HostIp": "",
"HostPort": "80"
}
],
"9001/tcp": [
{
"HostIp": "",
"HostPort": "9001"
}
]
},
...
"Mounts": [
{
"Source": "/d/Development/www",
"Destination": "/data/www",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
},
...
"NetworkSettings": {
"Bridge": "",
"SandboxID": "b96cf4c0f2c17d65659c31982b9200a79cca6f1c214770d31938204c493a6720",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"443/tcp": null,
"80/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "80"
}
],
"9001/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "9001"
}
]
},
...
"Networks": {
"anotherlampdocker_default": {
"IPAMConfig": null,
"Links": [
"db_mysql:db",
"db_mysql:db_mysql"
],
"Aliases": [
"php-fpm",
"248e8c254eee"
],
"NetworkID": "de1e10b63e6e5050809af59ac4d26b7cb691afd5805d1cf7f0492c702814f34d",
"EndpointID": "ccec71967c6100c5a9f3ad82d82bbb2a371f77e12c493bf05bfd15f2d188ce00",
"Gateway": "172.18.0.1",
"IPAddress": "172.18.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:12:00:03"
}
}
}
}
]

我正在尝试访问 http://localhost 但我不能。我也尝试过使用容器 IP 表示 http://172.18.0.3 并且也不起作用。

当我说我不能时,它意味着以下信息:

This site can’t be reached 172.18.0.3 took too long to respond.

相同的容器在 Linux 中完美运行。

这是c:\Windows\System32\drivers\etc\hosts文件的内容:

# localhost name resolution is handled within DNS itself.
127.0.0.1 localhost

容器中的端口映射到 docker-compose.yml 文件中的主机:

services:
php-fpm:
container_name: "php71-fpm-nginx"
build: php-fpm
ports:
- 80:80
- 9001:9001
environment:
PHP_ERROR_REPORTING: 'E_ALL & ~E_DEPRECATED & ~E_NOTICE'
STATUS_PAGE_ALLOWED_IP: '127.0.0.1'
volumes:
- D:\Development\www\:/data/www

我在这里缺少什么?

最佳答案

可以获取docker机器IP并访问应用:
1. 使用命令 docker-machine : docker-machine ip
2.或者通过登录到启动docker时创建的docker镜像并获取eth1 ip

然后尝试:[docker-machine ip]:[port]

关于docker - 如何从 Windows 中的 Docker 容器访问 "http://localhost"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41154794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com