#!/bin/bash # 定义颜色方便查看 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[0;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color echo -e "${BLUE}=========================================${NC}" echo -e "${BLUE} Debian Docker 环境深度检测脚本 ${NC}" echo -e "${BLUE}=========================================${NC}" echo "" # 1. 基础系统信息检测 echo -e "${YELLOW}[1/6] 检测系统基础信息...${NC}" echo -e "操作系统版本: $(cat /etc/debian_version)" echo -e "内核版本: $(uname -r)" echo -e "CPU 架构: $(dpkg --print-architecture)" echo -e "当前用户: $(whoami) (UID: $(id -u))" echo -e "防火墙状态 (ufw): $(command -v ufw >/dev/null 2>&1 && ufw status | head -n 1 || echo '未安装')" echo -e "防火墙状态 (iptables): $(command -v iptables >/dev/null 2>&1 && iptables -L -n | head -n 1 || echo '未安装/无权限')" echo -e "SELinux/AppArmor: $(command -v apparmor_status >/dev/null 2>&1 && apparmor_status | head -n 1 || echo '未检测到 AppArmor')" echo "" # 2. 检测 Docker 残留文件 echo -e "${YELLOW}[2/6] 检测 Docker 残留文件与目录...${NC}" FILES_TO_CHECK=( "/etc/docker" "/var/lib/docker" "/var/run/docker.sock" "/usr/bin/docker" "/usr/local/bin/docker-compose" "/usr/libexec/docker" ) FOUND_FILES=0 for file in "${FILES_TO_CHECK[@]}"; do if [ -e "$file" ]; then echo -e "${RED}[存在]${NC} 发现残留路径: $file" FOUND_FILES=1 # 如果是目录,看下里面有什么 if [ -d "$file" ]; then echo -e " └─ 包含文件数: $(ls -A "$file" | wc -l)" fi else echo -e "${GREEN}[干净]${NC} 未发现: $file" fi done if [ $FOUND_FILES -eq 0 ]; then echo -e "${GREEN}恭喜,文件系统层面似乎很干净。${NC}" fi echo "" # 3. 检测已安装的软件包 (apt/dpkg) echo -e "${YELLOW}[3/6] 检测已安装的 Docker 相关软件包...${NC}" DPKG_RES=$(dpkg -l | grep -iE 'docker|containerd|runc|podman' | awk '{print $1, $2, $3}') if [ -n "$DPKG_RES" ]; then echo -e "${RED}发现已安装的包:${NC}" echo "$DPKG_RES" else echo -e "${GREEN}未发现通过 apt 安装的 Docker 相关包。${NC}" fi echo "" # 4. 检测运行中的进程和服务 echo -e "${YELLOW}[4/6] 检测进程与 Systemd 服务...${NC}" if systemctl list-unit-files | grep -qE 'docker|containerd'; then echo -e "${RED}[警告]${NC} 发现 Docker/Containerd 服务注册:" systemctl list-unit-files | grep -E 'docker|containerd' else echo -e "${GREEN}[干净]${NC} Systemd 中无 Docker 相关服务。" fi if pgrep -f "dockerd" > /dev/null; then echo -e "${RED}[警告]${NC} 检测到 dockerd 进程正在运行!" else echo -e "${GREEN}[干净]${NC} 目前没有 dockerd 进程在运行。" fi echo "" # 5. 检测软件源 (Source List) echo -e "${YELLOW}[5/6] 检测 APT 软件源配置...${NC}" # 检查是否包含 docker 官方源或常见的国内镜像源 if grep -rE "download.docker.com|aliyun|tsinghua|163" /etc/apt/sources.list /etc/apt/sources.list.d/ > /dev/null; then echo -e "${BLUE}[信息]${NC} 发现以下可能相关的源配置:" grep -rE "download.docker.com|aliyun|tsinghua|163" /etc/apt/sources.list /etc/apt/sources.list.d/ | head -n 3 else echo -e "${BLUE}[信息]${NC} 未在源列表中发现明显的 Docker 官方或国内镜像源配置。" fi echo "" # 6. 检测网络连通性 (是否在中国大陆) echo -e "${YELLOW}[6/6] 网络环境简易检测...${NC}" echo "正在测试连接 download.docker.com ..." if curl -I -m 5 -s https://download.docker.com > /dev/null; then echo -e "${GREEN}[连接成功]${NC} 可以直接连接 Docker 官方源。" else echo -e "${RED}[连接失败]${NC} 无法连接 Docker 官方源 (可能需要配置国内镜像或代理)。" fi echo "" echo -e "${BLUE}================ 检测完成 =================${NC}" echo "请复制以上所有输出内容,发送给我。"