Update dock安装cf

This commit is contained in:
2026-01-17 14:46:00 +08:00
committed by GitHub
parent 419f50ce81
commit a974f6972d

View File

@@ -1,75 +1,128 @@
cat > /root/docker-offline-install.sh <<'EOF' cat > /root/docker-install-zip.sh <<'EOF'
#!/bin/sh #!/bin/bash
# ================= 配置区 =================
ZIP_NAME="dockde12.zip" ZIP_NAME="dockde12.zip"
WORKDIR="/root/docker-offline" WORKDIR="/root/docker-offline"
# 主下载地址
URL1="https://freeyx.vps3344.dpdns.org/xui/dockde12.zip" URL1="https://freeyx.vps3344.dpdns.org/xui/dockde12.zip"
# 备用下载地址
URL2="https://pub-b69a7194f4ea42fba6aa990c49bded91.r2.dev/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 date
# 1. 基础检查 # 0. 权限检查
echo "[1/7] 检查 dpkg" if [ "$(id -u)" != "0" ]; then
command -v dpkg >/dev/null 2>&1 || { log_err "必须使用 root 权限运行此脚本!"
echo "[错误] 系统没有 dpkg无法使用 DEB 离线安装" exit 1
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] 已存在离线包,跳过下载"
fi fi
# 3. 解压 # 1. 关键:检查并安装 unzip (解决之前的跳过问题)
echo "[3/7] 解压安装包" log_info "[1/7] 环境自检: unzip 工具"
rm -rf debs if ! command -v unzip >/dev/null 2>&1; then
mkdir debs log_warn "未找到 unzip 命令,正在尝试自动安装..."
unzip -o "$ZIP_NAME" -d debs || { apt-get update -y >/dev/null 2>&1
echo "[错误] 解压失败" apt-get install -y unzip >/dev/null 2>&1
exit 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 cd debs || exit 1
# 4. 强制安装(忽略依赖) # 5. 安装 DEB
echo "[4/7] 使用 dpkg 强制安装全部 DEB" log_info "[5/7] 开始安装 Docker DEB 包..."
dpkg -i *.deb || echo "[提示] 依赖错误已忽略,继续执行" dpkg -i *.deb
# 不立即退出,给 apt 修复的机会
# 5. 尝试修复(如果 apt 还能用就赚到) # 6. 依赖修复与服务启动
echo "[5/7] 尝试修复依赖(可失败)" log_info "[6/7] 检查依赖并启动服务..."
apt-get -f install -y >/dev/null 2>&1 || echo "[提示] apt 修复失败,已跳过" # 尝试修复可能的依赖缺失
apt-get -f install -y >/dev/null 2>&1
# 6. 尝试启动 Docker systemctl daemon-reload
echo "[6/7] 尝试启动 Docker" systemctl enable docker >/dev/null 2>&1
if command -v systemctl >/dev/null 2>&1; then systemctl start docker >/dev/null 2>&1
systemctl daemon-reexec >/dev/null 2>&1
systemctl enable docker >/dev/null 2>&1
systemctl start docker >/dev/null 2>&1
fi
sleep 2 # 7. 结果验证
log_info "[7/7] 最终验证..."
# 7. 验证
echo "[7/7] 验证 Docker 状态"
if command -v docker >/dev/null 2>&1; then 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 else
echo "[错误] docker 命令未安装成功" log_err "Docker 未能成功启动,请检查上方报错信息。"
exit 1
fi fi
echo "===== 脚本执行结束 ====="
date
EOF EOF
chmod +x /root/docker-install-zip.sh