我正在尝试创建不使用 Swarm 的覆盖 Docker 网络关联在 aws ec2 实例 AMI 中使用 consul multi host。我已经创建了一个覆盖网络并能够与容器通信。但是,当我尝试从主机访问容器特定端口时,出现连接被拒绝错误。主机没有任何防火墙。我如何才能访问覆盖网络上的容器端口。
奇怪的事实
- 如果我把容器无覆盖网络我能够从同一主机以及其他覆盖网络连接的机器 ping 容器端口。
[ec2-user@ip-172-31-3-222 ~]$ sudo docker run --name mynginx1 -p 5080:80 -d nginx 33a120ec5616fde53cfe4242055379c708a37451ce6d7ff12427ec7cdfce2f69
在职的 :
[ec2-user@ip-172-31-3-222 ~]$ telnet 172.31.3.222 5080
Trying 172.31.3.222...
Connected to 172.31.3.222.
Escape character is '^]'.
- 如果我把容器覆盖网络我无法从主机以及其他主机 ping 该容器。
[ec2-user@ip-172-31-3-222 ~]$ sudo docker run --net my-overlay --name mynginxoverlay -p 5081:80 -d nginx af30418ad4c930ee4adfc231880c7855f972e2765df9facba074955f200e164c [ec2-user@ip-172-31-3-222 ~]$ telnet 172.31.3.222 5081 Trying 172.31.3.222...
我的覆盖网络:
docker network create -d overlay --subnet=172.31.0.0/20 my-overlay
细节:
[ec2-user@ip-172-31-7-118 ~]$ sudo docker inspect my-overlay
[
{
"Name": "my-overlay",
"Id": "f4f2c67649ee108c9c88f224687a0ac1590a63f7ac06544cfe6dbd88aa2d773a",
"Created": "2019-06-22T15:09:13.739759915Z",
"Scope": "global",
"Driver": "overlay",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.31.0.0/20"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"ep-2bf37ede7b867f3b4059755d482da6e98557896d5c64c06c7e8655b4892e01a1": {
"Name": "mynginxoverlay",
"EndpointID": "2bf37ede7b867f3b4059755d482da6e98557896d5c64c06c7e8655b4892e01a1",
"MacAddress": "02:42:ac:1f:00:02",
"IPv4Address": "172.31.0.2/20",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]