centos7安装docker

#!/bin/bash
# 描述: CentOS 7 自动化安装 Docker 和 Docker Compose
# 作者: doubao
# 创建日期: 2025-06-17

# 颜色定义
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"
    exit 1
}

# 检查是否为root用户
check_root() {
    if [ "$(id -u)" -ne 0 ]; then
        log_error "请使用root用户执行此脚本"
    fi
}

# 检查系统版本
check_os() {
    if ! grep -q "CentOS Linux release 7" /etc/redhat-release; then
        log_error "此脚本仅适用于CentOS 7系统"
    fi
}

# 安装前准备
prepare_system() {
    log_info "开始系统准备..."
    
    # 更新系统
    yum update -y
    
    # 安装必要的依赖
    yum install -y yum-utils device-mapper-persistent-data lvm2
    
    log_info "系统准备完成"
}

# 安装Docker
install_docker() {
    log_info "开始安装Docker..."
    
    # 添加Docker官方源
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    
    # 安装Docker CE
    yum install -y docker-ce docker-ce-cli containerd.io
    
    # 配置Docker
    mkdir -p /etc/docker
    cat > /etc/docker/daemon.json < {
  "registry-mirrors": ["https://registry.docker-cn.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]
}
EOF
    
    # 创建docker组
    groupadd docker 2>/dev/null
    
    # 启动Docker并设置开机自启
    systemctl enable docker
    systemctl start docker
    
    # 验证安装
    if ! docker --version &>/dev/null; then
        log_error "Docker安装失败"
    fi
    
    log_info "Docker安装完成,版本: $(docker --version)"
}

# 安装Docker Compose
install_docker_compose() {
    log_info "开始安装Docker Compose..."
    
    # 获取最新版本号
    COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d\" -f4)
    
    # 下载Docker Compose
    curl -L "https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    
    # 添加执行权限
    chmod +x /usr/local/bin/docker-compose
    
    # 创建软链接
    ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
    
    # 验证安装
    if ! docker-compose --version &>/dev/null; then
        log_error "Docker Compose安装失败"
    fi
    
    log_info "Docker Compose安装完成,版本: $(docker-compose --version)"
}

# 验证安装
verify_installation() {
    log_info "开始验证安装..."
    
    # 测试Docker
    log_info "测试Docker hello-world..."
    if ! docker run --rm hello-world &>/dev/null; then
        log_error "Docker测试失败"
    fi
    
    # 测试Docker Compose
    log_info "测试Docker Compose..."
    mkdir -p /tmp/docker-test && cd /tmp/docker-test
    cat > docker-compose.yml < version: '3'
services:
  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
EOF
    docker-compose up -d
    sleep 5
    if ! curl -s http://localhost | grep -q "Welcome to nginx"; then
        log_error "Docker Compose测试失败"
    fi
    docker-compose down
    cd && rm -rf /tmp/docker-test
    
    log_info "安装验证完成,所有组件正常工作"
}

# 清理工作
cleanup() {
    log_info "开始清理..."
    yum clean all
    log_info "清理完成"
}

# 主函数
main() {
    log_info "开始执行Docker和Docker Compose安装脚本..."
    
    check_root
    check_os
    prepare_system
    install_docker
    install_docker_compose
    verify_installation
    cleanup
    
    log_info "======================================================================"
    log_info "Docker和Docker Compose已成功安装并配置"
    log_info "Docker服务已设置为开机自启"
    log_info "======================================================================"
}

# 执行主函数
main

你可能感兴趣的:(eureka,云原生)