我在Dockerfile中有一个带有EXPOSE 27017的容器,公共(public)ip和已发布的端口27017。ice inspect
输出中包含相关信息:
...
"PortBindings": {
"27017/tcp": [
{
"HostPort": "27017"
}
]
},
...
"NetworkSettings": {
"Bridge": "",
"Gateway": "",
"IpAddress": "172.31.0.16",
"IpPrefixLen": 0,
"PortMapping": null,
"Ports": {
"27017/tcp": [
{
"HostIp": "134.168.18.146",
"HostPort": "27017"
}
]
},
"PublicIpAddress": "134.168.18.146"
},
不过,我无法使用公共(public)ip连接到数据库,并且
nmap
显示端口27017已过滤。是否有其他步骤来暴露容器的端口?
最佳答案
这是因为nmap将带有SYN标志的数据包发送到服务器。它没有响应,但是当向其他关闭的端口发送SYN时,标志RST,ACK响应。然后,由于防火墙(或自己的服务器)阻止了响应数据包,因此对端口27017进行了过滤。
您可以通过hping进行检查