Script-Collected/devops/init_docker.sh

162 lines
3.5 KiB
Bash

#!/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