#!/bin/bash # ============================================== # Docker 安装脚本 (适用于 AlmaLinux/Rocky Linux 9) # 功能:自动安装 Docker 并配置国内镜像加速 # ============================================== # 启用严格模式 set -euo pipefail # -------------------------- # 颜色定义 # -------------------------- RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[0;33m' NC='\033[0m' # No Color # -------------------------- # 日志函数 # -------------------------- log_info() { echo -e "${GREEN}[INFO]${NC} $1" } log_warn() { echo -e "${YELLOW}[WARN]${NC} $1" } log_error() { echo -e "${RED}[ERROR]${NC} $1" >&2 } # -------------------------- # 检查 root 权限 # -------------------------- check_root() { if [ "$(id -u)" -ne 0 ]; then log_error "请使用 root 用户或通过 sudo 运行此脚本" exit 1 fi } # -------------------------- # 安装必要的工具 # -------------------------- install_tools() { log_info "正在安装必要的工具..." dnf install -y curl wget tar gzip } # -------------------------- # 添加 Docker 官方仓库 # -------------------------- add_docker_repo() { log_info "正在添加 Docker 官方仓库..." # 安装 yum-utils 工具 dnf install -y yum-utils # 添加 Docker 官方仓库 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo log_info "Docker 官方仓库已添加" } # -------------------------- # 配置国内镜像源(可选) # -------------------------- setup_mirror() { log_info "正在配置国内镜像源..." # 替换为阿里云镜像 sed -i 's|https://download.docker.com|https://mirrors.aliyun.com/docker-ce|g' /etc/yum.repos.d/docker-ce.repo log_info "已配置阿里云镜像源" } # -------------------------- # 安装 Docker # -------------------------- install_docker() { log_info "正在安装 Docker..." # 安装 Docker CE 和相关工具 dnf install -y docker-ce docker-ce-cli containerd.io log_info "Docker 已安装完成" } # -------------------------- # 配置 Docker 镜像加速 # -------------------------- configure_mirror_acceleration() { log_info "正在配置 Docker 镜像加速..." # 创建或修改 Docker 配置文件 mkdir -p /etc/docker cat > /etc/docker/daemon.json <<'EOF' { "registry-mirrors": [ "https://hub-mirror.c.163.com", "https://mirror.baidubce.com", "https://docker.m.daocloud.io" ] } EOF log_info "Docker 镜像加速已配置完成" } # -------------------------- # 启动并启用 Docker 服务 # -------------------------- start_docker() { log_info "正在启动 Docker 服务..." # 启动 Docker 服务 systemctl start docker # 设置开机自启 systemctl enable docker log_info "Docker 服务已启动并设置为开机自启" } # -------------------------- # 测试 Docker 安装 # -------------------------- test_docker() { log_info "正在测试 Docker 安装..." # 测试 Docker 版本 docker --version # 测试运行 hello-world 容器 docker run --rm hello-world log_info "Docker 测试完成" } # -------------------------- # 主函数 # -------------------------- main() { check_root install_tools add_docker_repo setup_mirror install_docker configure_mirror_acceleration start_docker test_docker log_info "Docker 已成功安装并配置!" } # -------------------------- # 执行主函数 # -------------------------- main exit 0