问题描述
有用户在AWS ECS实例上遇到了一个问题:ECS实例无法加入ECS集群,因为它依赖于Docker来启动其ECS代理。然而,在这种情况下,如果Docker启动失败,整个过程都会中断。用户在AWS ECS实例上启动Docker时遇到了以下错误信息:
Error starting daemon: error initializing graphdriver: devicemapper: Non existing device docker-docker--pool
用户注意到以下情况:
- 实例AMI是AWS ECS优化的AMI副本,具有嵌入的ECS代理和ECS的Docker配置。
解决方案
以下解决方案考虑了可能存在的版本差异和风险。在操作之前,请确保对系统和数据进行适当的备份。
方案1:检查Secondary Volume
AWS ECS针对ECS优化的Amazon Linux AMI默认管理VOLUME,但是如果你复制了该AMI并尝试启动新实例,ECS用于部署Docker的SECONDARY卷可能会丢失。
-
检查
/var/log/cloud-init-output.log
是否存在错误消息,例如:
ERROR: /dev//dev/xvdcz is not a valid block device.
-
检查实例挂载的卷,确保Secondary卷存在。通常,如果你看到上述错误,意味着只有
/dev/xvda
被挂载。
方案2:修复Secondary Volume
确保你的启动配置、启动模板或脚本始终部署Secondary卷 /dev/xvdcz
,无论AMI配置如何。不要依赖AMI,因为AMI流程可能已经发生了变化,可能无法保留所有必要的配置。
以上两种方案应该可以帮助你解决ECS实例无法启动Docker的问题。在采取行动之前,请确保充分了解每个操作的影响,并备份重要数据。如果你遇到任何困难,可以查阅相关文档或寻求AWS支持的帮助。
正文完