我在一个带有静态地址的ubuntu-vm-host上的容器内运行了一个dockerized node app,但只能通过localhost访问它。我使用命令: sudo docker run -d -p 49160:3000 8a5ccd9f4cca 启动应用程序。当我们在没有docker的vm中运行时,我可以毫不费力地访问vm上的运行节点服务器。 当我卷曲http://localhost:49160/test时,我得到了回复。但如果我尝试将其更改为curl http://"正确的IP地址":49160 / test它不起作用。
当i netstat -l在ubuntu-vm-host中时,转发端口显示。 如果我这样做:
curl http://172.17.0.1:49160/test
这是docker0网络接口的inet地址,它通过。
答案 0 :(得分:0)
对于之前不负责任的回答感到抱歉。调试问题
<强>已更新强>
首先看看应用是否正常运行,尝试
docker logs <container id>
如果所有通常打印出来的控制台都在那里,
方案1 :如果它不是,请使用-it标志而不是-d运行docker,然后手动启动进程并检查卷曲以进行调试。< / p>
docker run -it -p 49160:3000 <image id> /bin/bash
方案2 :如果正在运行,请检查内部ubuntu防火墙是否已启用,如果是,如果您不需要,请将其禁用。
sudo ufw status
禁用:sudo ufw disable
允许:sudo ufw allow 49160