Azure Debian 11 VM启动自动执行Docker安装脚本失败排查
解决Azure Debian 11自定义数据安装Docker失败的问题
问题根源分析
从cloud-init输出可定位核心问题:
- APT锁冲突:VM启动时系统后台已有
apt-get进程(PID 700)占用锁,导致脚本内apt命令无法执行 - 依赖包适配问题:Debian 11默认源中无
software-properties-common,对应Debian专属包为python3-software-properties;gnupg安装失败是因为源未完成更新 - 命令缺失:
add-apt-repository属于python3-software-properties包,默认未预装 - Docker配置过时:使用已弃用的
apt-key命令添加密钥,不符合Debian 11的源配置规范
修复后的自定义数据脚本
#!/bin/bash # 等待系统APT锁释放,最多等待300秒(5分钟) wait_for_apt_lock() { local timeout=300 local start_time=$(date +%s) while true; do if fuser /var/lib/apt/lists/lock >/dev/null 2>&1; then echo "等待APT锁释放..." sleep 10 if [ $(($(date +%s) - start_time)) -ge $timeout ]; then echo "等待APT锁超时,退出" exit 1 fi else echo "APT锁已释放,继续执行" break fi done } echo "** 等待系统APT进程完成..." wait_for_apt_lock echo "** 更新软件源列表..." sudo apt update -y echo "** 安装基础依赖..." # Debian 11中用python3-software-properties替代software-properties-common sudo apt install -y apt-transport-https ca-certificates curl gnupg2 python3-software-properties echo "** 添加Docker GPG密钥(使用官方推荐的keyring方式)..." curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "** 添加Docker软件源..." echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian bullseye stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null echo "** 再次更新软件源列表..." wait_for_apt_lock sudo apt update -y echo "** 安装Docker引擎..." sudo apt install -y docker-ce docker-ce-cli containerd.io echo "** Docker安装完成!验证版本:" sudo docker --version
关键修改说明
- APT锁等待机制:添加循环等待函数,确保系统后台
apt进程完成后再执行脚本命令,彻底避免锁冲突 - 依赖包适配:替换
software-properties-common为Debian专属的python3-software-properties,同时安装gnupg2(Debian 11中gnupg为虚拟包,实际依赖gnupg2) - Docker配置优化:采用Docker官方推荐的
keyring方式存储GPG密钥,规避apt-key弃用警告;直接写入源配置文件替代add-apt-repository,提升可靠性 - 结果验证:安装完成后增加
docker --version命令,方便在cloud-init日志中快速确认安装状态
验证方法
VM启动后,通过以下命令查看cloud-init执行日志:
cat /var/log/cloud-init-output.log
若安装成功,日志末尾会显示Docker版本信息。
内容的提问来源于stack exchange,提问作者buga
相关产品推荐
相关产品推荐

