AWS ECS实例无法启动Docker的问题及解决方案

93次阅读
没有评论

问题描述

有用户在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卷可能会丢失。

  1. 检查 /var/log/cloud-init-output.log 是否存在错误消息,例如:
    ERROR: /dev//dev/xvdcz is not a valid block device.

  2. 检查实例挂载的卷,确保Secondary卷存在。通常,如果你看到上述错误,意味着只有 /dev/xvda 被挂载。

方案2:修复Secondary Volume

确保你的启动配置、启动模板或脚本始终部署Secondary卷 /dev/xvdcz,无论AMI配置如何。不要依赖AMI,因为AMI流程可能已经发生了变化,可能无法保留所有必要的配置。

以上两种方案应该可以帮助你解决ECS实例无法启动Docker的问题。在采取行动之前,请确保充分了解每个操作的影响,并备份重要数据。如果你遇到任何困难,可以查阅相关文档或寻求AWS支持的帮助。

正文完