#!/bin/bash set -e DOCKER_TGZ="docker.tgz" COMPOSE_BIN="docker-compose" INSTALL_DIR="/usr/bin" SYSTEMD_DIR="/etc/systemd/system" DAEMON_JSON="/etc/docker/daemon.json" # =============================== # 多个镜像加速器 (按需修改) # =============================== REGISTRY_MIRRORS=( "https://docker-cf.registry.cyou" "https://docker.registry.cyou" "https://hub.uuuadc.top" "https://docker.anyhub.us.kg" "https://dockerhub.jobcher.com" "https://dockerhub.icu" "https://docker.ckyl.me" "https://docker.awsl9527.cn" "https://docker.rainbond.cc" "https://docker.1panel.live" "https://docker.1ms.run" "https://hub.rat.dev" "https://docker.jsdelivr.fyi" "https://dockerpull.com" "https://dockerproxy.cn" "https://docker.m.daocloud.io" "https://hub.gog.email" "https://7dg5h62m.mirror.aliyuncs.com" "https://registry.cn-hangzhou.aliyuncs.com" "https://dockerhub.azk8s.cn", "https://hub-mirror.c.163.com" "https://mirrors.ustc.edu.cn" "https://hub.c.163.com" ) echo "=== Docker Offline Installer (Full Version) ===" ############################################### # 函数:卸载旧 Docker ############################################### uninstall_old_docker() { echo "------ 开始卸载旧 Docker ------" # systemd 停止服务 systemctl stop docker >/dev/null 2>&1 || true systemctl stop docker.socket >/dev/null 2>&1 || true # 删除二进制 rm -f /usr/bin/docker rm -f /usr/bin/dockerd rm -f /usr/bin/containerd rm -f /usr/bin/runc rm -f /usr/local/bin/docker-compose # 针对 rpm 系统(CentOS / RHEL) if command -v rpm >/dev/null 2>&1; then rpm -qa | grep -E "docker|containerd" | xargs -r rpm -e --nodeps fi # 针对 deb 系统(Ubuntu / Debian) if command -v dpkg >/dev/null 2>&1; then apt-get remove -y docker docker-engine docker.io containerd runc >/dev/null 2>&1 || true fi echo "------ 卸载旧 Docker 完成 ------" } ############################################### # 执行卸载 ############################################### uninstall_old_docker ############################################### # 安装 Docker ############################################### echo "1) 安装 Docker 二进制程序..." if [ ! -f "$DOCKER_TGZ" ]; then echo "[ERROR] 未找到 docker.tgz,请放在当前目录" exit 1 fi tar -xf $DOCKER_TGZ cd docker cp docker* $INSTALL_DIR/ [ -f "containerd" ] && cp containerd $INSTALL_DIR/ [ -f "runc" ] && cp runc $INSTALL_DIR/ cd .. ############################################### # 创建 systemd 服务 ############################################### echo "2) 创建 systemd 服务文件..." cat > $SYSTEMD_DIR/docker.service < $DAEMON_JSON <