从用户数据重新启动ecs-agent

时间:2016-11-21 08:59:20

标签: amazon-web-services docker amazon-ec2 amazon-ebs amazon-ecs

我将EBS安装到AWS中支持ecs的实例。

要使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-agent容器已创建,但它没有运行。当我手动启动容器时,它正在工作。在实例启动期间启动它的正确方法是什么?我的用户数据脚本中缺少什么?

我需要创建一个启动配置,以便在我的自动缩放组中使用。实例应启用EBS并且对Docker可见。

1 个答案:

答案 0 :(得分:7)

如果您需要重新启动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。)