Files
dock/dock安装cf
2026-01-17 14:46:00 +08:00

129 lines
3.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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