0

我将EBS安装到AWS中的启用ecs的实例上。从用户数据重新启动ecs-agent

对于Docker可见的EBS,docker守护程序必须重新启动。我向用户数据添加了适当的命令。但我无法从用户数据重新启动ecs-agent docker容器。

以下是我的用户数据:

#!/bin/bash 
echo ECS_CLUSTER=MYCLUSTER>> /etc/ecs/ecs.config 
mkfs -t ext4 /dev/sdb 
mkdir /db/ 
mount /dev/sdb /db/ 
service docker stop 
service docker start 
docker start ecs-agent 

在SSH,我可以看到的是,ECS-剂容器被创建,但它没有运行。当我手动启动容器时,它正在工作。在实例启动期间启动它的正确方法是什么?我在用户数据脚本中缺少什么?

我需要创建一个用于自动缩放组的启动配置。实例应该启用EBS并且对泊坞窗可见。

回答

3

如果您需要重新启动Docker守护程序,您可能正在处理现有的EC2实例。在这种情况下,用户数据脚本不会对您有所帮助,因为根据EC2 User Guide,它们“仅在启动实例的第一个引导周期内运行”。

至于在实例启动期间启动ECS代理的正确方式,取决于您正在运行哪个分发。对于Amazon Linux实例的ECS Developer Guide建议ecs-init包:

sudo yum install -y ecs-init 
sudo service docker start 
sudo start ecs 

(如果你把这个在您的用户数据的脚本,不使用sudo

+0

谢谢。我的AMI是ecs-enabed。所以我不必做'yum install'。但我尝试了另外两个步骤。 Docker重启并不干净。 ecs-agent开始似乎失败,出现一些devicemapper错误。 – Nataraj

+0

你的意思是你正在使用[Amazon ECS优化的AMI](http://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html)?在这种情况下,预安装'ecs-init'并处理ECS代理初始化,因此您不必担心在实例启动期间启动它的正确方法。 – rbarni