问题:
来自windows主机。端口映射/曝光不起作用。
无法访问容器应用。
curl http://localhost:PORT (127.0.0.1 / 0.0.0.0)
-> Could not get any response
curl http://DOCKER-IP:PORT (127.17.0.1 / 127.17.0.2)
-> Could not get any response
curl http://DOCKER-SUBNET-ADDRESS:PORT (10.0.75.0)
-> Could not get any response
设定:
Windows10主机系统 + Docker容器(带有简单的helloworld python flask app)
Docker容器正在运行。 在docker容器内,flask应用程序的行为符合预期。
繁殖:
获取hello world repo
git clone https://github.com/shekhargulati/python-flask-docker-hello-world
构建并运行docker container
docker build -t simple-flask-app:latest .
docker run -d -p 5000:5000 simple-flask-app --name simple-flask-app
执行容器&检查瓶正在运行
docker exec -it simple-flask-app
apt-get install curl
curl http://127.0.0.1:5000
- >请参阅200 OK + Flask is running
(或类似文字)
退出泊坞窗容器
exit
卷曲你的Windows主机
curl http://127.0.0.1:5000
- >请参阅Could not get any response
(或类似内容)
答案 0 :(得分:3)
对我来说,最简单的解决方案是运行:
docker-machine ip default
这将打印IP地址。就我而言,ipconfig不会显示该IP。 我在Windows 7主机上使用Docker 18.03.0-ce进行了测试。
我在这里找到了这个提示:https://www.jhipster.tech/tips/020_tip_using_docker_containers_as_localhost_on_mac_and_windows.html
答案 1 :(得分:2)
我刚刚更改了name参数的顺序,并且它工作正常(在Linux中)。
docker run -d -p 5000:5000 --name simple-flask-app simple-flask-app
答案 2 :(得分:1)
简短解决方案
在您的Windows主机上
IPCONFIG
其中一个公开的IPv4地址可以使用。只要一个接一个地尝试。
curl http://IPCONFIG-IPv4-TRY-OUT:PORT
-> 200 OK + Flask is running
- > Windows上的Docker不会将流量转发到docker容器,如linux / mac所知。
- >看起来流量被认为是eth0。
答案 3 :(得分:1)
您需要连接到实际运行docker的VM:
通过运行docker-machine ip default
找到IP地址并使用该IP连接:
curl http://<ip-address>:5000
答案 4 :(得分:0)
您需要将应用设置为在host ='0.0.0.0'上运行。那就是:
app.run(host='0.0.0.0')
因此,当您运行时:
> docker run -d -p 5000:5000 simple-flask-app --name simple-flask-app
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
* Restarting with stat
然后curl http://localhost:5000
起作用。
贷方转到: https://codefresh.io/docker-tutorial/hello-whale-getting-started-docker-flask/
答案 5 :(得分:0)
与烧瓶无关,但最近我遇到了同样的问题。我们的主机需要一个静态IP地址,因此IT更改了一些网络配置。然后,我注意到“控制面板” \“网络”和“ Internet \网络连接”中的vEthernet适配器已禁用。启用此端口后,转发到容器实例似乎又可以工作了。