#!/bin/bash # ============================================================================== # Docker + Docker Compose 一键安装脚本(适配 Rocky/CentOS/RHEL/AlmaLinux) # - 使用阿里云软件源安装 Docker 引擎 # - 自动配置国内镜像加速器(毫秒镜像、Rat's Hub、轩辕镜像) # - 设置容器日志轮转(max-size=100m, max-file=3) # - 同时安装官方 Docker Compose V2(作为 docker compose 插件) # - 小柳实验室-www.xlsys.cn # ============================================================================== set -e # --- 颜色定义 --- RED='\033[1;31m' GREEN='\033[1;32m' YELLOW='\033[1;33m' BLUE='\033[1;34m' NC='\033[0m' log_info() { echo -e "${GREEN}[✓]${NC} $1"; } log_warn() { echo -e "${YELLOW}[!]${NC} $1"; } log_error() { echo -e "${RED}[✗]${NC} $1" >&2; exit 1; } log_step() { echo -e "${BLUE}>>>${NC} $1"; } # --- 权限检查 --- if [[ $EUID -ne 0 ]]; then log_error "请使用 root 权限运行此脚本(sudo 或 su -)" fi # --- 系统识别 --- if [ ! -f /etc/os-release ]; then log_error "无法识别操作系统:/etc/os-release 不存在" fi . /etc/os-release case "$ID" in rocky|centos|rhel|almalinux) log_info "检测到系统:$PRETTY_NAME" ;; *) log_error "仅支持 Rocky Linux / CentOS / RHEL / AlmaLinux,当前系统:$ID" ;; esac # ============================================================================== log_step "1. 安装必要依赖工具" # ============================================================================== dnf install -y yum-utils || yum install -y yum-utils # ============================================================================== log_step "2. 添加阿里云 Docker CE 软件源" # ============================================================================== yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo rpm --import https://mirrors.aliyun.com/docker-ce/linux/centos/gpg >/dev/null 2>&1 || true # ============================================================================== log_step "3. 安装 Docker 引擎及 Compose 插件" # ============================================================================== # 安装完整套件(包含 docker-compose-plugin) dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin || \ yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin # ============================================================================== log_step "4. 启动 Docker 并设置开机自启" # ============================================================================== systemctl enable --now docker # ============================================================================== log_step "5. 配置 Docker 镜像加速器与日志策略" # ============================================================================== mkdir -p /etc/docker cat > /etc/docker/daemon.json </dev/null; then DOCKER_VER=$(docker --version) log_info "Docker 已安装:${DOCKER_VER#Docker version }" else log_error "Docker 安装失败!" fi # 检查 Compose V2(作为插件) if docker compose version &>/dev/null; then COMPOSE_VER=$(docker compose version) log_info "Docker Compose (V2) 已安装:$COMPOSE_VER" else log_warn "Docker Compose 未安装成功,请手动检查" fi # 检查镜像加速器是否生效(任一匹配即可) if docker info | grep -q "Registry Mirrors" && \ (docker info | grep -q "docker.1ms.run" || \ docker info | grep -q "hub.rat.dev" || \ docker info | grep -q "docker.xuanyuan.me"); then log_info "镜像加速器已生效 ✅" else log_warn "镜像加速器可能未生效,请检查 /etc/docker/daemon.json" fi # ============================================================================== # === 最终提示 === # ============================================================================== echo echo "──────────────────────────────────────────────" echo "docker + Docker Compose 安装与配置已完成!" echo echo "🔹 查看镜像加速器:" echo " docker info | grep -A 5 'Registry Mirrors'" echo "──────────────────────────────────────────────"