Amazon web services Docker swarm模式| telnet:can';无法连接到远程主机:无法访问主机
在AWS EC2上,尝试从Swarm容器连接到专用RDS实例。它在容器中失败,但在主机上运行良好。我有一个单一的主节点设置-Amazon web services Docker swarm模式| telnet:can';无法连接到远程主机:无法访问主机,amazon-web-services,docker,docker-swarm-mode,Amazon Web Services,Docker,Docker Swarm Mode,在AWS EC2上,尝试从Swarm容器连接到专用RDS实例。它在容器中失败,但在主机上运行良好。我有一个单一的主节点设置- bash-4.3# telnet mydb.cd1xokc1nbn4.ap-southeast-1.rds.amazonaws.com 5432 telnet: can't connect to remote host (10.0.2.3): Host is unreachable bash-4.3# exit ubuntu@ip-10-0-2-157:~/metaba
bash-4.3# telnet mydb.cd1xokc1nbn4.ap-southeast-1.rds.amazonaws.com 5432
telnet: can't connect to remote host (10.0.2.3): Host is unreachable
bash-4.3# exit
ubuntu@ip-10-0-2-157:~/metabase$ telnet mydb.cd1xokc1nbn4.ap-southeast-1.rds.amazonaws.com 5432
Trying 10.0.2.3...
Connected to mydb.cd1xokc1nbn4.ap-southeast-1.rds.amazonaws.com.
Escape character is '^]'.
我很确定这与Swarm中的网络有关,因为如果我运行docker
,我就能够连接到DB
Docker版本-
Client:
Version: 18.09.0
API version: 1.39
Go version: go1.10.4
Git commit: 4d60db4
Built: Wed Nov 7 00:49:01 2018
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.0
API version: 1.39 (minimum version 1.12)
Go version: go1.10.4
Git commit: 4d60db4
Built: Wed Nov 7 00:16:44 2018
OS/Arch: linux/amd64
Experimental: false
通过使用主机网络模式,我可以使其正常工作
.......
networks:
- metabase
networks:
metabase:
external:
name: "host"
PS-使用主机网络模式后工作正常,但不建议这样做。欢迎提供更多答案,因为我不确定其使用默认swarm虚拟网络的确切原因。我遇到了相同的问题-根据您想要连接的IP地址,我想您的问题也有相同的原因 Docker Swarm覆盖网络默认使用10.0.x.x范围内的IP地址。在您的例子中,您希望连接到数据库的服务/容器可能位于10.0.2.x IP范围内的Docker网络中,因此它将尝试通过该网络连接到数据库主机,这显然是不起作用的 所以你需要解决这个冲突。一种方法是配置Swarm以使用不同的IP范围。缺点是,您只能在初始化Swarm时执行此操作(因此您必须重新创建它)。例如:
docker swarm init --default-addr-pool 10.10.0.0/16
验证其是否按预期工作的一种方法是随后创建一个新网络并检查子网:
docker network create -d overlay proxy
docker network inspect proxy | grep Subnet
如果您可以控制AWS子网的IP范围,您可能还可以更改那里的IP地址范围,以避免这样的问题