docker启动失败

**

**

问题很明确了:Failed at step LIMITS spawning /usr/bin/dockerd: Operation not permittedstatus=205/LIMITS。这表明 systemd 在设置资源限制时遇到了权限问题。

解决方案:

1. 移除或修复有问题的资源限制配置

bash 复制代码
# 移除我们之前创建的 override 配置
rm -f /etc/systemd/system/docker.service.d/override.conf

# 重新加载 systemd
systemctl daemon-reload

2. 使用更保守的资源限制

bash 复制代码
# 创建正确的服务配置目录
mkdir -p /etc/systemd/system/docker.service.d

# 创建安全的资源限制配置
cat > /etc/systemd/system/docker.service.d/limits.conf << 'EOF'
[Service]
LimitNOFILE=65536
LimitNPROC=65536
EOF

# 重新加载配置
systemctl daemon-reload

3. 检查系统级限制

bash 复制代码
# 检查系统全局限制
cat /etc/security/limits.conf | grep -v "^#"

# 检查 systemd 系统级限制
cat /etc/systemd/system.conf | grep -i limit
cat /etc/systemd/user.conf | grep -i limit

4. 重置 Docker 服务

bash 复制代码
# 停止 Docker
systemctl stop docker

# 重置失败计数器
systemctl reset-failed docker

# 清理可能的残留
pkill -f docker
pkill -f containerd

# 重新启动
systemctl start docker

5. 如果仍然失败,使用最小化配置

bash 复制代码
# 完全移除自定义配置
rm -rf /etc/systemd/system/docker.service.d/

# 重新加载
systemctl daemon-reload

# 使用原始服务文件启动
systemctl start docker

6. 检查内核版本和兼容性

bash 复制代码
# 检查内核版本
uname -r

# Docker 18.03.1 需要较新的内核,检查是否满足要求

7. 替代方案:直接修改主服务文件

如果上述方法都不行,可以临时修改主服务文件:

bash 复制代码
# 备份原服务文件
cp /usr/lib/systemd/system/docker.service /usr/lib/systemd/system/docker.service.backup

# 编辑服务文件,注释掉有问题的 Limit 行
sed -i 's/^LimitNOFILE=/#LimitNOFILE=/g' /usr/lib/systemd/system/docker.service
sed -i 's/^LimitNPROC=/#LimitNPROC=/g' /usr/lib/systemd/system/docker.service
sed -i 's/^LimitCORE=/#LimitCORE=/g' /usr/lib/systemd/system/docker.service

# 重新加载并启动
systemctl daemon-reload
systemctl start docker

8. 检查容器运行时配置

bash 复制代码
# 检查 containerd 配置
ls -la /var/run/docker/containerd/

# 如果有问题,清理 containerd 相关文件
systemctl stop docker
rm -rf /var/run/docker/containerd/

9. 最终手段:重新安装 Docker

bash 复制代码
# 完全卸载
yum remove -y docker docker-common docker-selinux docker-engine

# 清理所有配置和数据
rm -rf /var/lib/docker
rm -rf /etc/docker
rm -rf /etc/systemd/system/docker.service.d

# 重新安装
yum install -y docker

# 启动服务(不要立即修改配置)
systemctl start docker
systemctl status docker

请先执行第1步和第2步,这应该能解决权限问题。如果问题仍然存在,请分享:

  1. systemctl status docker 的输出
  2. cat /etc/systemd/system/docker.service.d/limits.conf 的内容(如果存在)
  3. uname -r 的输出

这个问题通常是由于系统对资源限制的强制策略导致的,通过使用更保守的限制值应该能够解决。

相关推荐
七夜zippoe1 天前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
金刚猿1 天前
01_虚拟机中间件部署_root 用户安装 docker 容器,配置非root用户权限
docker·中间件·容器
JH_Kong1 天前
解决 WSL 中 Docker 权限问题:从踩坑到完整修复
docker·容器
忆~遂愿1 天前
GE 引擎与算子版本控制:确保前向兼容性与图重写策略的稳定性
大数据·开发语言·docker
Fcy6481 天前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满1 天前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠1 天前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Harvey9031 天前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
陈桴浮海1 天前
Kustomize实战:从0到1实现K8s多环境配置管理与资源部署
云原生·容器·kubernetes
珠海西格电力科技1 天前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市