查看非法字符
查看是否文件中包含非法字符
cat -A docker-compose.yaml | head -30
如果看到 M-BM- 或 ^@ 等字符,说明有 BOM。
修复yaml内的特殊字符
直接命令移除bom修复
# 1. 移除 BOM 头
sed -i '1s/^\xEF\xBB\xBF//' docker-compose.yaml
# 2. 移除所有 M-BM- 字符(不可见控制字符)
sed -i 's/\xEF\xBB\xBF//g' docker-compose.yaml
sed -i 's/\xC2\xA0/ /g' docker-compose.yaml
# 3. 统一缩进(将可能的 Tab 转为 2 空格)
sed -i 's/\t/ /g' docker-compose.yaml
# 4. 验证修复
docker compose config使用 dos2unix 工具
# 安装工具
yum install -y dos2unix # CentOS/RHEL
# 或
apt-get install -y dos2unix # Ubuntu/Debian
# 转换文件
dos2unix docker-compose.yaml
# 验证
docker compose config使用python脚本清理
python3 << 'EOF'
with open('docker-compose.yaml', 'rb') as f:
content = f.read()
# 移除 BOM
if content.startswith(b'\xef\xbb\xbf'):
content = content[3:]
# 移除其他不可见字符
content = content.replace(b'\xc2\xa0', b' ')
with open('docker-compose.yaml', 'wb') as f:
f.write(content)
print("文件已清理")
EOF
docker compose config