我有一个单机器群(即,一个主节点,就是这样),其具有以下docker-compose.yml
文件:服务器不搬运工群内绑定到端口
version: "3"
services:
web:
image: rbalicki/hellorocket:latest
ports:
- "8001:8000"
depends_on:
- "db"
environment:
- DATABASE_URL=postgres://docker:[email protected]:5432/pw_back
command: cargo run # this runs the server
db:
image: rbalicki/pg:latest
我运行下面的命令,每教程:
docker-machine create --driver virtualbox myvm1
docker-machine ssh myvm1 "docker swarm init --advertise-addr 192.168.99.100:2377"
docker-machine scp docker-compose.yml myvm1:~
docker-machine ssh myvm1 "docker stack deploy -c docker-compose.yml hellorocketstack"
docker machine ls
给我的tcp://192.168.99.100:2376
的IP。
web
进程的Dockerfile也显示了8000。在本地,当我运行这个服务器时,它连接到8000端口没有问题。但是,在虚拟机内部,当我卷曲192.168.99.100:8001
(同样适用于8000
)时,它不会收到任何请求。这是真的,即使我杀了虚拟机并彻底重启我的机器。但是,如果我安装了其他服务(例如,教程中的可视化工具),它们工作得很好。
这让我疯狂!我怎样才能弄清楚发生了什么?
另外,在vm中,我也不能调用curl localhost:8001
(它在重映射的端口上用于可视化器)。任何帮助表示赞赏!我可以采取下一步措施进行调试吗?
编辑:nc -zv 192.168.99.100 8001
也没有变成什么! (它适用于可视化)
EDIT2:docker inspect CONTAINER
显示:
"Config": {
"ExposedPorts": {
"8001/tcp": {}
},
},
"NetworkSettings": {
"Ports": {
"8001/tcp": null
},
}
这是同样的事情docker inspect
命令显示的工作示例(模暴露的端口号)
什么Web容器秀做日志?如果你用'docker exec'连接到web容器,你可以'卷曲http:// localhost:8000'? – BMitch
这工作 - 我得到了服务器的响应。现在怎么办? –
停止Docker服务并运行'iptables -S'并发布规则。检查虚拟机上是否启用了'ufw'或'selinux'或'firewalld'。有些虚拟机默认具有IPTables规则,只允许22端口 –