cat > /root/docker-install-zip.sh <<'EOF' #!/bin/bash # ================= 配置区 ================= ZIP_NAME="dockde12.zip" WORKDIR="/root/docker-offline" # 主下载地址 URL1="https://freeyx.vps3344.dpdns.org/xui/dockde12.zip" # 备用下载地址 URL2="https://pub-b69a7194f4ea42fba6aa990c49bded91.r2.dev/xui/dockde12.zip" # ================= 颜色与日志 ================= RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' log_info() { echo -e "${GREEN}[INFO] $1${NC}"; } log_warn() { echo -e "${YELLOW}[WARN] $1${NC}"; } log_err() { echo -e "${RED}[ERROR] $1${NC}"; } # ================= 脚本开始 ================= echo -e "${GREEN}===== Docker ZIP 版 智能安装脚本 =====${NC}" date # 0. 权限检查 if [ "$(id -u)" != "0" ]; then log_err "必须使用 root 权限运行此脚本!" exit 1 fi # 1. 关键:检查并安装 unzip (解决之前的跳过问题) log_info "[1/7] 环境自检: unzip 工具" if ! command -v unzip >/dev/null 2>&1; then log_warn "未找到 unzip 命令,正在尝试自动安装..." apt-get update -y >/dev/null 2>&1 apt-get install -y unzip >/dev/null 2>&1 # 再次检查 if ! command -v unzip >/dev/null 2>&1; then log_err "无法安装 unzip!" log_err "可能原因:系统断网或源有问题。" log_err "解决方案:请先手动执行 'apt install unzip' 或更换为 tar.gz 包。" exit 1 fi log_info "unzip 安装成功!" else log_info "unzip 已存在,准备就绪。" fi # 2. 目录检查与创建 (你的需求) log_info "[2/7] 初始化工作目录..." if [ -d "$WORKDIR" ]; then log_warn "目录已存在: $WORKDIR" log_warn "清理旧文件以防冲突..." rm -f "$WORKDIR/$ZIP_NAME" rm -rf "$WORKDIR/debs" else log_info "创建新目录: $WORKDIR" mkdir -p "$WORKDIR" fi cd "$WORKDIR" || exit 1 # 3. 下载文件 (智能切换 curl/wget) log_info "[3/7] 下载离线包..." download_file() { if command -v curl >/dev/null 2>&1; then curl -L --fail --connect-timeout 15 --retry 2 "$1" -o "$2" elif command -v wget >/dev/null 2>&1; then wget --timeout=15 --tries=2 -O "$2" "$1" else return 1 fi } if download_file "$URL1" "$ZIP_NAME"; then log_info "主线路下载成功!" else log_warn "主线路失败,切换备用线路..." if download_file "$URL2" "$ZIP_NAME"; then log_info "备用线路下载成功!" else log_err "下载失败!请检查网络连通性。" exit 1 fi fi # 4. 解压 log_info "[4/7] 解压文件..." mkdir -p debs unzip -o "$ZIP_NAME" -d debs >/dev/null 2>&1 || { log_err "解压失败!文件可能损坏。" exit 1 } cd debs || exit 1 # 5. 安装 DEB log_info "[5/7] 开始安装 Docker DEB 包..." dpkg -i *.deb # 不立即退出,给 apt 修复的机会 # 6. 依赖修复与服务启动 log_info "[6/7] 检查依赖并启动服务..." # 尝试修复可能的依赖缺失 apt-get -f install -y >/dev/null 2>&1 systemctl daemon-reload systemctl enable docker >/dev/null 2>&1 systemctl start docker >/dev/null 2>&1 # 7. 结果验证 log_info "[7/7] 最终验证..." if command -v docker >/dev/null 2>&1; then echo -e "----------------------------------------------------" echo -e "${GREEN}Docker 安装成功!${NC}" echo -e "版本: $(docker --version)" echo -e "状态: $(systemctl is-active docker)" echo -e "----------------------------------------------------" else log_err "Docker 未能成功启动,请检查上方报错信息。" exit 1 fi EOF chmod +x /root/docker-install-zip.sh