**

**
问题很明确了:Failed at step LIMITS spawning /usr/bin/dockerd: Operation not permitted 和 status=205/LIMITS。这表明 systemd 在设置资源限制时遇到了权限问题。
解决方案:
1. 移除或修复有问题的资源限制配置
1# 移除我们之前创建的 override 配置 2rm -f /etc/systemd/system/docker.service.d/override.conf 3 4# 重新加载 systemd 5systemctl daemon-reload 6
2. 使用更保守的资源限制
1# 创建正确的服务配置目录 2mkdir -p /etc/systemd/system/docker.service.d 3 4# 创建安全的资源限制配置 5cat > /etc/systemd/system/docker.service.d/limits.conf << 'EOF' 6[Service] 7LimitNOFILE=65536 8LimitNPROC=65536 9EOF 10 11# 重新加载配置 12systemctl daemon-reload 13
3. 检查系统级限制
1# 检查系统全局限制 2cat /etc/security/limits.conf | grep -v "^#" 3 4# 检查 systemd 系统级限制 5cat /etc/systemd/system.conf | grep -i limit 6cat /etc/systemd/user.conf | grep -i limit 7
4. 重置 Docker 服务
1# 停止 Docker 2systemctl stop docker 3 4# 重置失败计数器 5systemctl reset-failed docker 6 7# 清理可能的残留 8pkill -f docker 9pkill -f containerd 10 11# 重新启动 12systemctl start docker 13
5. 如果仍然失败,使用最小化配置
1# 完全移除自定义配置 2rm -rf /etc/systemd/system/docker.service.d/ 3 4# 重新加载 5systemctl daemon-reload 6 7# 使用原始服务文件启动 8systemctl start docker 9
6. 检查内核版本和兼容性
1# 检查内核版本 2uname -r 3 4# Docker 18.03.1 需要较新的内核,检查是否满足要求 5
7. 替代方案:直接修改主服务文件
如果上述方法都不行,可以临时修改主服务文件:
1# 备份原服务文件 2cp /usr/lib/systemd/system/docker.service /usr/lib/systemd/system/docker.service.backup 3 4# 编辑服务文件,注释掉有问题的 Limit 行 5sed -i 's/^LimitNOFILE=/#LimitNOFILE=/g' /usr/lib/systemd/system/docker.service 6sed -i 's/^LimitNPROC=/#LimitNPROC=/g' /usr/lib/systemd/system/docker.service 7sed -i 's/^LimitCORE=/#LimitCORE=/g' /usr/lib/systemd/system/docker.service 8 9# 重新加载并启动 10systemctl daemon-reload 11systemctl start docker 12
8. 检查容器运行时配置
1# 检查 containerd 配置 2ls -la /var/run/docker/containerd/ 3 4# 如果有问题,清理 containerd 相关文件 5systemctl stop docker 6rm -rf /var/run/docker/containerd/ 7
9. 最终手段:重新安装 Docker
1# 完全卸载 2yum remove -y docker docker-common docker-selinux docker-engine 3 4# 清理所有配置和数据 5rm -rf /var/lib/docker 6rm -rf /etc/docker 7rm -rf /etc/systemd/system/docker.service.d 8 9# 重新安装 10yum install -y docker 11 12# 启动服务(不要立即修改配置) 13systemctl start docker 14systemctl status docker 15
请先执行第1步和第2步,这应该能解决权限问题。如果问题仍然存在,请分享:
systemctl status docker的输出cat /etc/systemd/system/docker.service.d/limits.conf的内容(如果存在)uname -r的输出
这个问题通常是由于系统对资源限制的强制策略导致的,通过使用更保守的限制值应该能够解决。
《docker启动失败》 是转载文章,点击查看原文。
