Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services Docker swarm模式| telnet:can';无法连接到远程主机:无法访问主机_Amazon Web Services_Docker_Docker Swarm Mode - Fatal编程技术网

Amazon web services Docker swarm模式| telnet:can';无法连接到远程主机:无法访问主机

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

在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:~/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地址范围,以避免这样的问题