Docker HTTP以外的ECS服务继续重启

Docker HTTP以外的ECS服务继续重启,docker,containers,amazon-elb,amazon-ecs,Docker,Containers,Amazon Elb,Amazon Ecs,我通过AWS ECS安装了Nginx ECS Docker容器服务,该服务运行时没有任何问题。但是,通过AWS ECS安装的其他容器服务,如centos、ubuntu、mongodb或postgres,都会以循环的方式重新启动(注销、重新注册或处于挂起状态)。在AMI优化的Linux上,有没有办法使用AWS ECS安装这些容器服务而不出现任何问题?另外,有没有办法在AWS ECS中注册从Docker Hub手动拉取并运行的Docker容器?通常情况下,如果容器由于未通过您设置的运行状况检查而一次

我通过AWS ECS安装了Nginx ECS Docker容器服务,该服务运行时没有任何问题。但是,通过AWS ECS安装的其他容器服务,如centos、ubuntu、mongodb或postgres,都会以循环的方式重新启动(注销、重新注册或处于挂起状态)。在AMI优化的Linux上,有没有办法使用AWS ECS安装这些容器服务而不出现任何问题?另外,有没有办法在AWS ECS中注册从Docker Hub手动拉取并运行的Docker容器?

通常情况下,如果容器由于未通过您设置的运行状况检查而一次又一次重新启动。例如MongoDB不使用HTTP协议,因此如果在ECS中设置为HTTP healthcheck的服务,则无法通过healthcheck,并且会因未能通过healthcheck而被ECS杀死

我的建议是在不使用healthcheck的情况下启动此类服务,或者作为独立任务,或者使用您自己的healthcheck机制


如果您尝试运行的服务实际上有一个HTTP接口,但它仍然没有通过healthcheck,并且它被终止,那么您应该进行一些调试,以验证该实例是否具有正确的安全组规则来接受来自负载平衡器的流量。此外,您应该验证您在任务定义中定义的端口是否与healthcheck的端口匹配。

通常情况下,如果容器由于未通过您设置的healthcheck而一再重新启动。例如,MongoDB不使用HTTP协议,因此,如果您在ECS中使用HTTP healthcheck将其设置为服务,则它将无法通过healthcheck,并且将因无法通过healthcheck而被ECS终止

我的建议是在不使用healthcheck的情况下启动此类服务,或者作为独立任务,或者使用您自己的healthcheck机制


如果您尝试运行的服务实际上有一个HTTP接口,但它仍然没有通过healthcheck,并且它被终止,那么您应该进行一些调试,以验证该实例是否具有正确的安全组规则来接受来自负载平衡器的流量。此外,您应该验证您在任务定义中定义的端口是否与healthcheck的端口匹配。

非常感谢您的回复。我在AWS ECS中看不到任何不使用运行状况检查即可启动服务的选项。我在没有使用ALB的情况下为centos创建了任务定义和服务,但仍然不起作用。如何使用AWS ECS在同一ec2实例中运行多个容器,如centos、mongodb、postgres、ubuntu?我尝试为每个容器创建单独的任务定义和服务,并为每个容器创建映射端口,例如Centos的端口0到5002,mongoDB的端口0到28017,postgresql的端口0到5432,但无论如何都不起作用。再次感谢。健康检查是服务负载平衡的一部分。创建服务时,负载平衡是可选的。您可以在没有负载平衡器的情况下创建服务。只需将其配置为绑定到静态端口,然后使用您自己的机制将流量发送到容器的端口。这允许您使用TCP协议直接连接到数据库容器。非常感谢。除了web服务之外,我还排除了健康检查中的所有服务,并且它工作正常。我想知道,在我使用Docker CLI手动拉取并运行Docker映像和容器后,是否可以自动更新AWS ECS,而不是通过ECS部署所有内容。非常感谢您的回复。我在AWS ECS中看不到任何不使用运行状况检查即可启动服务的选项。我在没有使用ALB的情况下为centos创建了任务定义和服务,但仍然不起作用。如何使用AWS ECS在同一ec2实例中运行多个容器,如centos、mongodb、postgres、ubuntu?我尝试为每个容器创建单独的任务定义和服务,并为每个容器创建映射端口,例如Centos的端口0到5002,mongoDB的端口0到28017,postgresql的端口0到5432,但无论如何都不起作用。再次感谢。健康检查是服务负载平衡的一部分。创建服务时,负载平衡是可选的。您可以在没有负载平衡器的情况下创建服务。只需将其配置为绑定到静态端口,然后使用您自己的机制将流量发送到容器的端口。这允许您使用TCP协议直接连接到数据库容器。非常感谢。除了web服务之外,我还排除了健康检查中的所有服务,并且它工作正常。我想知道,在我使用Docker CLI手动拉取并运行Docker映像和容器,而不是通过ECS部署所有内容后,是否可以自动更新AWS ECS。