我将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可见。
答案 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
。)