Docker & Docker Compose 一键安装脚本

Docker 和 Docker Compose 安装脚本

个人博客

个人博客直达地址
网站不断完善中里面拥有大量的脚本,并且源码完全开放 欢迎纯白嫖。关注公众私信可免费写脚本

概述

这是一个优化后的 Bash 脚本,用于自动化安装 Docker 和 Docker Compose。脚本会自动检测系统类型(Ubuntu 或 CentOS),并执行相应的安装步骤。有错误处理、日志记录、安装验证等功能。

主要功能

  1. 检测操作系统类型(Ubuntu 或 CentOS)
  2. 卸载已存在的 Docker(如果有)
  3. 安装最新版本的 Docker
  4. 安装最新版本的 Docker Compose
  5. 验证安装是否成功

详细说明

通用功能

  1. 错误处理:使用 set -e 确保任何命令失败时脚本会立即退出
  2. 日志记录:所有操作都会记录到 /var/log/docker_install.log
  3. Root 权限检查:确保脚本以 root 权限运行
  4. 操作系统检测:使用 /etc/os-release 文件检测操作系统类型和版本

Ubuntu 系统

  1. 卸载旧版本 Docker
  2. 更新软件包索引
  3. 安装必要的依赖
  4. 添加 Docker 官方 GPG 密钥
  5. 设置 Docker 仓库
  6. 安装最新版本的 Docker

CentOS 系统

  1. 卸载旧版本 Docker
  2. 安装必要的依赖
  3. 设置 Docker 仓库
  4. 安装最新版本的 Docker
  5. 启动 Docker 服务并设置开机自启

Docker Compose 安装

  1. 获取最新版本的 Docker Compose
  2. 下载并安装 Docker Compose
  3. 设置可执行权限
  4. 创建软链接以确保命令可用

改进

  1. 添加了错误处理和日志记录
  2. 增加了对安装成功的验证
  3. 现在安装最新版本的 Docker,而不是特定版本
  4. 为 CentOS 系统添加了启动 Docker 服务并设置开机自启的步骤
  5. 获取最新版本的 Docker Compose,而不是硬编码版本号
  6. 增加了 Root 权限检查
  7. 改进了操作系统检测方法

注意事项

  1. 脚本仍然需要 root 权限运行
  2. 目前仅支持 Ubuntu 和 CentOS 系统
  3. 脚本会安装最新版本的 Docker 和 Docker Compose,如果需要特定版本,需要手动修改脚本
  4. 安装过程中的所有操作都会记录到 /var/log/docker_install.log

使用方法

  1. 将脚本保存为 .sh 文件,例如 install_docker.sh
  2. 给脚本添加执行权限:chmod +x install_docker.sh
  3. 使用 root 权限运行脚本:sudo ./install_docker.sh

潜在的进一步改进

  1. 添加命令行参数,允许用户选择是否安装 Docker Compose 或指定版本号
  2. 增加对更多 Linux 发行版的支持
  3. 添加卸载功能
  4. 增加配置 Docker 镜像源的选项,以加快下载速度
  5. 添加安装后的基本安全配置选项
#!/bin/bash

# 设置错误处理
set -e

# 日志函数
log() {
    echo "[$(date +'%Y-%m-%dT%H:%M:%S%z')]: $*" | tee -a /var/log/docker_install.log
}

# 检查root权限
if [ "$(id -u)" != "0" ]; then
   log "This script must be run as root" 1>&2
   exit 1
fi

# 检测操作系统
if [ -f /etc/os-release ]; then
    . /etc/os-release
    OS=$NAME
    VER=$VERSION_ID
else
    log "Cannot detect OS, exiting."
    exit 1
fi

# 安装Docker函数
install_docker() {
    log "Installing Docker..."
    if [ "$OS" = "Ubuntu" ]; then
        apt-get update
        apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
        curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
        echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
        apt-get update
        apt-get install -y docker-ce docker-ce-cli containerd.io
    elif [ "$OS" = "CentOS Linux" ]; then
        yum install -y yum-utils device-mapper-persistent-data lvm2
        yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
        yum install -y docker-ce docker-ce-cli containerd.io
        systemctl start docker
        systemctl enable docker
    else
        log "Unsupported OS"
        exit 1
    fi
}

# 安装Docker Compose函数
install_docker_compose() {
    log "Installing Docker Compose..."
    COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d\" -f4)
    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 -sf /usr/local/bin/docker-compose /usr/bin/docker-compose
}

# 主程序
main() {
    log "Starting Docker and Docker Compose installation script"

    # 卸载旧版本Docker
    log "Removing old Docker versions..."
    if [ "$OS" = "Ubuntu" ]; then
        apt-get remove -y docker docker-engine docker.io containerd runc || true
    elif [ "$OS" = "CentOS Linux" ]; then
        yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine || true
    fi

    # 安装Docker
    install_docker

    # 安装Docker Compose
    install_docker_compose

    # 验证安装
    log "Verifying installation..."
    docker --version
    docker-compose --version

    log "Installation completed successfully"
}

# 运行主程序
main
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脚本小能手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值