Update dock安装cf
This commit is contained in:
161
dock安装cf
161
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
|
||||
|
||||
Reference in New Issue
Block a user