162 lines
3.5 KiB
Bash
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 |