Docker:能够从主机远程login远程机器,但不能从容器远程login
我们在ECS上部署了一对Docker容器。 容器内的应用程序使用远程服务,因此需要使用它们的10.XXX
私有IP访问它们。
我们使用Docker 1.13与CentOS 7和docker / alpine作为我们的基本映像。 我们也使用netwokMode: host
为我们的容器。 问题来了,我们可以从主机成功运行telnet 10.XXX 9999
,但是如果我们从容器内部运行相同的命令,它只是挂起,不能连接。
另外,我们在主机(容器运行的地方)启用了net.ipv4.ip_forward
,但在远程机器上禁用了。
不知道可能是什么问题,也许iptables
?
我花了一天的时间(同时尝试networking模式'桥'和'主机'),它看起来像在ECS内使用busybox的telnet问题 – Alpine的远程login是一个符号连接到busybox。 我不太了解busybox / networking的含义,提出什么是根本原因,但是通过使用其他工具,我能够certificatenetworkingpath是清楚的。
我'去'testing一个networkingpath是使用netcat如下。 “成功”或“失败”消息因版本而异,但拒绝或超时(-w#)非常明显。 所有的netcat在这里都是请求一个套接字 – 它实际上并没有与监听应用程序交谈,所以你需要别的东西来testing它。
nc -vz -w2 HOST PORT
我今天的问题是解决一个应用程序的mongo连接。 nc显示的path是清楚的,但telnet与您报告的问题相同。 我结束了安装mongo客户端并检查,我可以正确连接。
如果您需要从ECS容器内部通过telnet实际运行命令,请尝试安装其他Telnet工具,并避免使用busybox内置的工具。
- ECS将不会启动实例,“由于无法find资源,无法执行任务”。
- 使用volume-from挂载的音量为空
- Docker:用于开发和生产环境的不同的ENVvariables
- AWS ECS上的PostgreSQL:psycopg2.OperationalError端口号5432无效
- 在ECS中链接docker镜像:一个带有nodejs应用程序的mongodb实例
- 请参阅在同一个ECS集群中运行的其他服务/任务
- 将应用程序从一个AMI无缝切换到另一个AMI
- 如何在不退出的情况下在AWS ECS上运行节点容器
- 如何将多个日志stream从ecs上的单个容器logging到不同的cloudwatch日志stream中