110 lines
3.9 KiB
Bash
110 lines
3.9 KiB
Bash
#!/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 "请复制以上所有输出内容,发送给我。" |