diff --git a/devops/init_docker.sh b/devops/init_docker.sh new file mode 100644 index 0000000..a11e083 --- /dev/null +++ b/devops/init_docker.sh @@ -0,0 +1,162 @@ +#!/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 \ No newline at end of file