首页 > 其他分享 >Docker一键安装脚本信息

Docker一键安装脚本信息

时间:2024-08-20 13:53:35浏览次数:14  
标签:脚本 counter 一键 echo step yum steps Docker

Docker一键安装脚本信息

脚本内容: 

#!/bin/bash

set -e

LOGFILE="setup_docker.log"

# 将输出重定向到日志文件,同时在终端显示
exec > >(tee -i $LOGFILE)
exec 2>&1

# 检查命令是否可用
check_command() {
    command -v "$1" >/dev/null 2>&1 || {
        echo >&2 "$1 是必需的命令但未安装。正在终止。"
        exit 1
    }
}

# 检查网络连接
check_network() {
    echo "检查网络连接..."
    curl -s --head https://www.baidu.com | head -n 1 | grep "200\|301\|302" >/dev/null || {
        echo "无法连接到互联网,请检查网络连接。"
        exit 1
    }
}

# 打印当前内核版本信息
print_kernel_version() {
    echo "当前内核版本:"
    uname -r
}

# 备份 yum 源配置
backup_yum_repos() {
    echo "备份现有的 yum 源配置..."
    sudo cp -r /etc/yum.repos.d /etc/yum.repos.d.backup || {
        echo "备份 yum 源配置失败。正在终止。"
        exit 1
    }
}

# 更新 yum 源为阿里云镜像
update_yum_repos() {
    echo "更新 yum 源为阿里云镜像..."
    sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo || {
        echo "更新 yum 源失败。正在终止。"
        exit 1
    }
}

# 清理和重新生成 yum 缓存
refresh_yum_cache() {
    echo "清理 yum 缓存..."
    sudo yum clean all || {
        echo "清理 yum 缓存失败。正在终止。"
        exit 1
    }
    echo "重新生成 yum 缓存..."
    sudo yum makecache || {
        echo "生成 yum 缓存失败。正在终止。"
        exit 1
    }
}

# 更新系统
update_system() {
    echo "更新系统软件包..."
    sudo yum update -y || {
        echo "更新系统软件包失败。正在终止。"
        exit 1
    }
}

# 安装必要的软件包
install_packages() {
    echo "安装必要的软件包..."
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2 || {
        echo "安装必要的软件包失败。正在终止。"
        exit 1
    }
}

# 添加 Docker CE 仓库
add_docker_repo() {
    echo "添加 Docker CE 仓库..."
    sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo || {
        echo "添加 Docker CE 仓库失败。正在终止。"
        exit 1
    }
    echo "替换 Docker CE 仓库的下载地址为阿里云镜像..."
    sudo sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo || {
        echo "替换 Docker CE 仓库下载地址失败。正在终止。"
        exit 1
    }
}

# 安装 Docker CE
install_docker() {
    echo "安装 Docker CE..."
    sudo yum install -y docker-ce-25.0.5 docker-ce-cli-25.0.5 containerd.io || {
        echo "安装 Docker CE 失败。正在终止。"
        exit 1
    }
}

# 下载并设置 Docker Compose
setup_docker_compose() {
    echo "下载 Docker Compose..."
    sudo curl -L https://gitee.com/fustack/docker-compose/releases/download/v2.24.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose || {
        echo "下载 Docker Compose 失败。正在终止。"
        exit 1
    }
    echo "赋予 Docker Compose 执行权限..."
    sudo chmod +x /usr/local/bin/docker-compose || {
        echo "赋予 Docker Compose 执行权限失败。正在终止。"
        exit 1
    }
}

# 启动和设置 Docker 服务
manage_docker_service() {
    echo "启动 Docker 服务..."
    sudo systemctl start docker || {
        echo "启动 Docker 服务失败。正在终止。"
        exit 1
    }
    echo "设置 Docker 服务开机启动..."
    sudo systemctl enable docker || {
        echo "设置 Docker 服务开机启动失败。正在终止。"
        exit 1
    }
    echo "重启 Docker 服务..."
    sudo systemctl restart docker || {
        echo "重启 Docker 服务失败。正在终止。"
        exit 1
    }
}

# 主函数
main() {
    # 进度提示
    local steps=("检查命令" "检查网络连接" "打印内核版本" "备份 yum 源配置" "更新 yum 源" "清理和生成 yum 缓存" "更新系统" "安装必要软件包" "添加 Docker 仓库" "安装 Docker" "设置 Docker Compose" "管理 Docker 服务")

    # 步骤计数器
    local step_counter=1

    echo "开始执行脚本,共 ${#steps[@]} 个步骤..."

    # 检查必要的命令是否可用
    echo "步骤 ${step_counter}/${#steps[@]}: ${steps[$((step_counter-1))]}"
    check_command curl
    check_command yum
    check_command sudo
    check_command systemctl
    step_counter=$((step_counter + 1))

    # 检查网络连接
    echo "步骤 ${step_counter}/${#steps[@]}: ${steps[$((step_counter-1))]}"
    check_network
    step_counter=$((step_counter + 1))

    echo "步骤 ${step_counter}/${#steps[@]}: ${steps[$((step_counter-1))]}"
    print_kernel_version
    step_counter=$((step_counter + 1))

    echo "步骤 ${step_counter}/${#steps[@]}: ${steps[$((step_counter-1))]}"
    backup_yum_repos
    step_counter=$((step_counter + 1))

    echo "步骤 ${step_counter}/${#steps[@]}: ${steps[$((step_counter-1))]}"
    update_yum_repos
    step_counter=$((step_counter + 1))

    echo "步骤 ${step_counter}/${#steps[@]}: ${steps[$((step_counter-1))]}"
    refresh_yum_cache
    step_counter=$((step_counter + 1))

    echo "步骤 ${step_counter}/${#steps[@]}: ${steps[$((step_counter-1))]}"
    update_system
    step_counter=$((step_counter + 1))

    echo "步骤 ${step_counter}/${#steps[@]}: ${steps[$((step_counter-1))]}"
    install_packages
    step_counter=$((step_counter + 1))

    echo "步骤 ${step_counter}/${#steps[@]}: ${steps[$((step_counter-1))]}"
    add_docker_repo
    step_counter=$((step_counter + 1))

    echo "步骤 ${step_counter}/${#steps[@]}: ${steps[$((step_counter-1))]}"
    install_docker
    step_counter=$((step_counter + 1))

    echo "步骤 ${step_counter}/${#steps[@]}: ${steps[$((step_counter-1))]}"
    setup_docker_compose
    step_counter=$((step_counter + 1))

    echo "步骤 ${step_counter}/${#steps[@]}: ${steps[$((step_counter-1))]}"
    manage_docker_service
    step_counter=$((step_counter + 1))

    echo "脚本执行成功!"
}

main

验证:

docker pull hello-world

原文阅读:【巨人肩膀社区·专栏·分享】03 Docker一键安装脚本信息

标签:脚本,counter,一键,echo,step,yum,steps,Docker
From: https://blog.csdn.net/atbigapp/article/details/141356630

相关文章

  • Docker-基础篇
    Linux安装#step1:安装必要的一些系统工具sudoyuminstall-yyum-utilsdevice-mapper-persistent-datalvm2#Step2:添加软件源信息sudoyum-config-manager--add-repohttps://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#Step4:更新并安装Docke......
  • AlmaLinux release 9.4 安装docker环境
    1.安装docker环境1.1查看系统环境[root@AlmaLinux-9~]$cat/etc/redhat-release;uname-rs移除旧版本的Docker(如果有):sudoyumremovedocker\docker-client\docker-client-latest\docker-common\......
  • openEuler安装Docker和踩坑分析
    去年12月8日,CentOS开发团队在其官博宣布,CentOS8将在2021年12月31日结束支持,CentOS7会按照计划维护至生命周期结束即2024年6月30日,接下来接下来将重点建设CentOSStream。免费的RedHat没有了,但生活还得继续。接下来我的目光转向openEuler,openEuler是一个开......
  • Docker 入门教程
    本文是官方GettingStarts教程的阅读笔记,包含对步骤、命令的记录和解释。教程分一系列课程,包括有:安装Docker运行容器和创建自定义容器创建高效可复用的镜像,并推送到DockerHub上GetDockerDesktopDockerDesktop是简单易用的Docker工具软件,使用DockerDesktop可......
  • Docker 入门文档阅读笔记
    Docker的架构图片来自Docker官网教程Docker采用CS架构,可以通过CLI和API与Dockerdaemon进行交互。DockerObjectsImages(镜像)Animageisaread-onlytemplatewithinstructionsforcreatingaDockercontainer.Often,animageisbasedonanotherima......
  • Docker概述
    DockerⅠ容器介绍1.什么是容器容器一词的英文是container,其实container还有集装箱的意思,集装箱绝对是商业史上了不起的一项发明,大大降低了海洋贸易运输成本。让我们来看看集装箱的好处:·集装箱之间相互隔离·长期反复使用·快速装载和卸载·规格标准,在港口和船上都可以......
  • Docker compose 部署前后端-----采用nginx代理,支持一个端口部署多个前端
    Dockercompose部署前后端-----采用nginx代理,支持一个端口部署多个前端1、Linux服务器安装最新版docker,确保有dockercompose命令2、创建docker工作区目录mkdirdocker-workspace3、进入docker工作区目录,创建前端nginx目录,创建后端xxx目录mkdirnginxxxx4、创建confi......
  • powerdesigner从sql脚本生成pdm文件
    1、File-->ReverseEngineer(逆向工程)-->Database2、选择数据库类型,我的是MySQL所以选择MySQL5.03、选择脚本文件脚本内容: 查看代码DROPTABLEIFEXISTS`drawing_library`;CREATETABLE`drawing_library`(`id`bigintNOTNULLAUTO_INCREMENTCOMMENT'图纸......
  • 在K8S中,Kubernetes与Docker有什么关系?
    Kubernetes和Docker都是现代云原生技术栈的重要组成部分,但它们各自解决的问题领域不同。下面详细介绍它们之间的关系以及区别:1.DockerDocker是一个流行的容器化平台,它允许开发者将应用程序及其依赖打包成一个轻量级、可移植的容器。这样做的好处包括:隔离性:每个容器都有自......
  • 职场写作总是手忙脚乱? 笔灵AI,一键解决职场写作难题
    在当今时代,人工智能技术日渐普及,诸多学子已掌握运用ChatGPT或其他AI工具以助论文撰写之技巧。然而,论文检测系统却日趋严格,除了常规的查重检测外,竟然还出现了AI率检测。不少高等院校亦开始对AI率实施限制,AI率过高可能导致论文不予通过,这无疑令众多学子感到困扰。于是,如何有效降......