From a974f6972d6117f0e365786f249d9236c501f3b7 Mon Sep 17 00:00:00 2001 From: xzx3344521 Date: Sat, 17 Jan 2026 14:46:00 +0800 Subject: [PATCH] =?UTF-8?q?Update=20dock=E5=AE=89=E8=A3=85cf?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dock安装cf | 161 +++++++++++++++++++++++++++++++++++------------------ 1 file changed, 107 insertions(+), 54 deletions(-) diff --git a/dock安装cf b/dock安装cf index 51e0252..65e8c1f 100644 --- a/dock安装cf +++ b/dock安装cf @@ -1,75 +1,128 @@ -cat > /root/docker-offline-install.sh <<'EOF' -#!/bin/sh +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" -echo "===== Docker Debian12 离线安装脚本 =====" +# ================= 颜色与日志 ================= +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 -# 1. 基础检查 -echo "[1/7] 检查 dpkg" -command -v dpkg >/dev/null 2>&1 || { - echo "[错误] 系统没有 dpkg,无法使用 DEB 离线安装" - exit 1 -} - -mkdir -p "$WORKDIR" -cd "$WORKDIR" || exit 1 - -# 2. 获取安装包 -if [ ! -f "$ZIP_NAME" ]; then - echo "[2/7] 下载离线安装包(主地址)" - curl -L --fail "$URL1" -o "$ZIP_NAME" || { - echo "[警告] 主地址失败,使用备用地址" - curl -L --fail "$URL2" -o "$ZIP_NAME" || { - echo "[错误] 离线包下载失败" - exit 1 - } - } -else - echo "[2/7] 已存在离线包,跳过下载" +# 0. 权限检查 +if [ "$(id -u)" != "0" ]; then + log_err "必须使用 root 权限运行此脚本!" + exit 1 fi -# 3. 解压 -echo "[3/7] 解压安装包" -rm -rf debs -mkdir debs -unzip -o "$ZIP_NAME" -d debs || { - echo "[错误] 解压失败" - exit 1 +# 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 -# 4. 强制安装(忽略依赖) -echo "[4/7] 使用 dpkg 强制安装全部 DEB" -dpkg -i *.deb || echo "[提示] 依赖错误已忽略,继续执行" +# 5. 安装 DEB +log_info "[5/7] 开始安装 Docker DEB 包..." +dpkg -i *.deb +# 不立即退出,给 apt 修复的机会 -# 5. 尝试修复(如果 apt 还能用就赚到) -echo "[5/7] 尝试修复依赖(可失败)" -apt-get -f install -y >/dev/null 2>&1 || echo "[提示] apt 修复失败,已跳过" +# 6. 依赖修复与服务启动 +log_info "[6/7] 检查依赖并启动服务..." +# 尝试修复可能的依赖缺失 +apt-get -f install -y >/dev/null 2>&1 -# 6. 尝试启动 Docker -echo "[6/7] 尝试启动 Docker" -if command -v systemctl >/dev/null 2>&1; then - systemctl daemon-reexec >/dev/null 2>&1 - systemctl enable docker >/dev/null 2>&1 - systemctl start docker >/dev/null 2>&1 -fi +systemctl daemon-reload +systemctl enable docker >/dev/null 2>&1 +systemctl start docker >/dev/null 2>&1 -sleep 2 - -# 7. 验证 -echo "[7/7] 验证 Docker 状态" +# 7. 结果验证 +log_info "[7/7] 最终验证..." if command -v docker >/dev/null 2>&1; then - docker version || echo "[警告] docker 命令存在,但 daemon 未启动" + echo -e "----------------------------------------------------" + echo -e "${GREEN}Docker 安装成功!${NC}" + echo -e "版本: $(docker --version)" + echo -e "状态: $(systemctl is-active docker)" + echo -e "----------------------------------------------------" else - echo "[错误] docker 命令未安装成功" + log_err "Docker 未能成功启动,请检查上方报错信息。" + exit 1 fi - -echo "===== 脚本执行结束 =====" -date EOF + +chmod +x /root/docker-install-zip.sh