Alibaba Cloud Linux 4 安装docker后,修复docker的方法

#!/bin/bash
set -e

echo "🔧 Docker 服务崩溃修复..."

# 停止所有 Docker 相关服务
echo "🛑 停止 Docker 服务..."
sudo systemctl stop docker.socket 2>/dev/null || true
sudo systemctl stop docker 2>/dev/null || true

# 杀死可能残留的 Docker 进程
echo "🔫 清理残留进程..."
sudo pkill -f docker 2>/dev/null || true
sleep 2

# 备份并移除配置(可能是配置导致崩溃)
echo "💾 备份配置..."
sudo mv /etc/docker/daemon.json /etc/docker/daemon.json.bak 2>/dev/null || true

# 清理可能损坏的运行时文件
echo "🧹 清理运行时文件..."
sudo rm -f /var/run/docker.sock 2>/dev/null || true
sudo rm -f /var/run/docker.pid 2>/dev/null || true

# 重置失败计数
echo "🔄 重置服务状态..."
sudo systemctl reset-failed docker docker.socket

# 重新创建最小化配置
echo "📝 创建最小配置..."
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "debug": true,
  "storage-driver": "overlay2"
}
EOF

# 重新加载 systemd
sudo systemctl daemon-reload

# 先启动 socket
echo "🚀 启动 Docker socket..."
sudo systemctl start docker.socket

# 等待 socket 就绪
sleep 2

# 再启动 Docker 服务
echo "🚀 启动 Docker 服务..."
sudo systemctl start docker

# 等待并检查状态
sleep 3

if sudo systemctl is-active --quiet docker; then
    echo "✅ Docker 启动成功!"
    
    # 测试基本功能
    echo "🧪 测试 Docker 功能..."
    if docker --version && docker info; then
        echo "✅ Docker 功能正常"
    fi
else
    echo "❌ Docker 仍然启动失败"
    echo "📋 查看详细错误:"
    sudo journalctl -u docker.service --no-pager -n 20
fi

posted on 2025-10-26 15:40  侗家小蚁哥  阅读(0)  评论(0)    收藏  举报