EC2实例cloud-init脚本异常:Docker安装失败及脚本未执行
问题解决:EC2 cloud-init脚本未安装Docker且自定义脚本未执行
问题根源分析
从日志里的关键错误就能定位问题:
amazon-linux-extras: command not found:你的EC2实例是Amazon Linux 2023 (AL2023),这个系统已经移除了amazon-linux-extras工具,Docker现在直接在默认软件仓库里,不需要通过extras渠道安装。- 后续的Docker服务找不到、用户组不存在,都是Docker安装失败引发的连锁错误。
- 自定义脚本放在
per-boot目录,这个目录的脚本是每次系统启动时执行,不是初始化阶段执行,所以初始化过程中看不到它的输出。
修复后的cloud-init脚本
替换成适配AL2023的版本,同时调整脚本执行时机:
Content-Type: multipart/mixed; boundary="//" MIME-Version: 1.0 --// Content-Type: text/cloud-config; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="cloud-config.txt" #cloud-config runcmd: - dnf update -y - dnf install docker -y - systemctl start docker - usermod -a -G docker ec2-user - systemctl enable docker - dnf install cronie cronie-anacron -y # 确保scripts-user模块在初始化阶段执行 cloud_final_modules: - [scripts-user, always] write_files: # 初始化阶段执行的脚本放在scripts-user目录 - path: /var/lib/cloud/scripts/user/myInitScript.sh permissions: "0755" content: | #!/bin/bash echo "Hello World. The time is now $(date -R)!" >> /home/ec2-user/out.txt # 保留开机执行的脚本(如果需要每次启动都跑) - path: /var/lib/cloud/scripts/per-boot/myBootScript.sh permissions: "0755" content: | #!/bin/bash echo "Booted at $(date -R)!" >> /home/ec2-user/boot_log.txt --//--
关键修改点说明
Docker安装适配AL2023:
- 把
yum换成dnf(AL2023默认包管理器,yum是软链接,用dnf更规范) - 移除
amazon-linux-extras install docker,直接用dnf install docker -y - 用
systemctl enable docker替代chkconfig docker on(AL2023用systemd管理服务)
- 把
自定义脚本执行时机调整:
- 要在初始化阶段执行,就把脚本放在
/var/lib/cloud/scripts/user/目录,这个目录的脚本会在cloud-init的scripts-user模块阶段执行(对应配置里的cloud_final_modules设置) - 如果需要每次开机都执行,保留
per-boot目录的脚本,但初始化阶段不会触发,得重启后才能看到输出
- 要在初始化阶段执行,就把脚本放在
路径修正:
- 脚本里的
$HOME在cloud-init执行时指向/root,如果要写到ec2-user的目录,直接用绝对路径/home/ec2-user/out.txt更可靠
- 脚本里的
验证方法
- 用修复后的脚本重新创建实例或重启现有实例
- 检查Docker状态:
systemctl status docker - 查看初始化脚本输出:
cat /home/ec2-user/out.txt - 查看开机脚本输出(重启后):
cat /home/ec2-user/boot_log.txt - 排查问题看日志:
cat /var/log/cloud-init.log或cat /var/log/cloud-init-output.log
内容的提问来源于stack exchange,提问作者dev
相关产品推荐
相关产品推荐

