Linux脚本一键自动安装Docker

📋 概述

本文档提供了三个针对不同Linux发行版的Docker一键安装管理脚本,支持Docker和Docker Compose的完整生命周期管理。每个脚本都是独立完整的解决方案,无需额外依赖。

🎯 支持的系统

  • CentOS/RHEL - 基于yum包管理器
  • Ubuntu/Debian - 基于apt包管理器
  • Kali Linux - 基于Debian,针对Kali 2025.1优化

✨ 主要功能

  • 🚀 一键安装Docker CE和Docker Compose
  • 🔧 服务管理(启动/停止/重启)
  • 🗑️ 完整卸载功能
  • 🎨 交互式菜单界面
  • 🛡️ 错误处理和状态检查

🐧 CentOS Docker 管理脚本

📋 系统要求

  • CentOS 7 或更高版本
  • 具有sudo权限的用户账户
  • 稳定的网络连接

🚀 快速使用

# 保存脚本
vim docker_manager_centos.sh

# 赋予执行权限
chmod +x docker_manager_centos.sh

# 运行脚本
./docker_manager_centos.sh

📄 完整脚本代码

#!/bin/bash
 
# docker_manager.sh
# 用于管理 Docker 和 Docker Compose 的交互脚本
 
# =======================
# 配置变量
# =======================
 
# Docker 仓库地址
DOCKER_REPO="https://download.docker.com/linux/centos/docker-ce.repo"
 
# =======================
# 函数定义
# =======================
 
# 安装 Docker 和 Docker Compose
install_docker() {
    echo "正在安装 Docker..."
 
    # 移除旧版本
    sudo yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
 
    # 安装必要的软件包
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
 
    # 添加 Docker 仓库
    sudo yum-config-manager --add-repo $DOCKER_REPO
 
    # 安装 Docker
    sudo yum install -y docker-ce docker-ce-cli containerd.io
 
    # 启动并设置开机自启
    sudo systemctl start docker
    sudo systemctl enable docker
 
    echo "Docker 安装完成。"
 
    # 安装 Docker Compose
    echo "正在安装 Docker Compose..."
 
    # 获取最新版本号
    DOCKER_COMPOSE_LATEST=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep tag_name | cut -d '"' -f 4)
 
    if [ -z "$DOCKER_COMPOSE_LATEST" ]; then
        echo "无法获取 Docker Compose 最新版本号。请手动检查 https://github.com/docker/compose/releases"
        return
    fi
 
    # 下载 Docker Compose 二进制文件
    sudo curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_LATEST}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
 
    # 授予可执行权限
    sudo chmod +x /usr/local/bin/docker-compose
 
    # 创建软链接(可选)
    sudo ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose
 
    # 验证安装
    if command -v docker-compose &> /dev/null; then
        echo "Docker Compose 安装完成,版本:$(docker-compose --version)"
    else
        echo "Docker Compose 安装失败。"
    fi
}
 
# 启动 Docker 服务
start_docker() {
    echo "正在启动 Docker 服务..."
    sudo systemctl start docker
    sudo systemctl enable docker
    echo "Docker 服务已启动。"
}
 
# 重启 Docker 服务
restart_docker() {
    echo "正在重启 Docker 服务..."
    sudo systemctl restart docker
    if [ $? -eq 0 ]; then
        echo "Docker 服务已成功重启。"
    else
        echo "Docker 服务重启失败,请检查日志。"
    fi
}
 
# 停止 Docker 服务
stop_docker() {
    echo "正在停止 Docker 服务..."
    sudo systemctl stop docker
    if [ $? -eq 0 ]; then
        echo "Docker 服务已停止。"
    else
        echo "Docker 服务停止失败,请检查日志。"
    fi
}
 
# 卸载 Docker 和 Docker Compose
uninstall_docker() {
    echo "正在卸载 Docker..."
 
    # 停止 Docker 服务
    sudo systemctl stop docker
 
    # 卸载 Docker
    sudo yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
 
    # 删除所有镜像、容器、卷和网络
    sudo rm -rf /var/lib/docker
 
    echo "Docker 已卸载。"
 
    # 卸载 Docker Compose
    echo "正在卸载 Docker Compose..."
 
    sudo rm -f /usr/local/bin/docker-compose
    sudo rm -f /usr/bin/docker-compose
 
    echo "Docker Compose 已卸载。"
}
 
# 显示菜单
show_menu() {
    echo "=============================="
    echo "      Docker 管理脚本         "
    echo "=============================="
    echo "1. 安装 Docker(包括 Docker Compose)"
    echo "2. 启动 Docker 服务"
    echo "3. 重启 Docker 服务"
    echo "4. 停止 Docker 服务"
    echo "5. 卸载 Docker(包括 Docker Compose)"
    echo "6. 退出"
    echo "=============================="
}
 
# =======================
# 主程序
# =======================
 
while true; do
    show_menu
    read -p "请输入你的选择 [1-6]:" choice
    case $choice in
        1)
            install_docker
            ;;
        2)
            start_docker
            ;;
        3)
            restart_docker
            ;;
        4)
            stop_docker
            ;;
        5)
            uninstall_docker
            ;;
        6)
            echo "退出脚本。"
            exit 0
            ;;
        *)
            echo "无效的选择,请重新输入。"
            ;;
    esac
    echo ""
done

🐧 Debian 管理脚本

📄 完整脚本代码

#!/bin/bash
# docker_manager.sh
# 用于管理 Docker 和 Docker Compose 的交互脚本
# =======================
# 适配系统:Debian 12 (Bookworm)
# =======================

# =======================
# 配置变量
# =======================
# 【修改点 1】将 Ubuntu 仓库改为 Debian 官方仓库
DOCKER_REPO="https://download.docker.com/linux/debian"

# =======================
# 函数定义
# =======================

# 安装 Docker 和 Docker Compose
install_docker() {
    echo "正在安装 Docker..."

    # 检查是否安装了 sudo (Debian 12 默认可能没有 sudo)
    if ! command -v sudo &> /dev/null; then
        echo "错误: 未找到 sudo 命令。请先安装 sudo 或以 root 用户运行。"
        return
    fi

    # 移除旧版本
    sudo apt-get remove -y docker docker-engine docker.io containerd runc

    # 更新包索引
    sudo apt-get update

    # 安装必要的软件包
    sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release

    # 【修改点 2】修改 GPG 密钥下载地址,指向 Debian 路径
    curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg --yes

    # 设置稳定的 Docker 仓库
    echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] $DOCKER_REPO $(lsb_release -cs) stable" | \
      sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

    # 更新包索引
    sudo apt-get update

    # 安装 Docker Engine、Docker CLI 和 containerd
    sudo apt-get install -y docker-ce docker-ce-cli containerd.io

    # 启动并设置开机自启
    sudo systemctl start docker
    sudo systemctl enable docker

    echo "Docker 安装完成。"

    # 安装 Docker Compose
    echo "正在安装 Docker Compose..."

    # 获取最新版本号
    DOCKER_COMPOSE_LATEST=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep tag_name | cut -d '"' -f 4)

    if [ -z "$DOCKER_COMPOSE_LATEST" ]; then
        echo "无法获取 Docker Compose 最新版本号。请手动检查 https://github.com/docker/compose/releases"
        return
    fi

    # 下载 Docker Compose 二进制文件
    sudo curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_LATEST}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

    # 授予可执行权限
    sudo chmod +x /usr/local/bin/docker-compose

    # 创建软链接
    sudo ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose

    # 验证安装
    if command -v docker-compose &> /dev/null; then
        echo "Docker Compose 安装完成,版本:$(docker-compose --version)"
    else
        echo "Docker Compose 安装失败。"
    fi
}

# 启动 Docker 服务
start_docker() {
    echo "正在启动 Docker 服务..."
    sudo systemctl start docker
    sudo systemctl enable docker
    echo "Docker 服务已启动。"
}

# 重启 Docker 服务
restart_docker() {
    echo "正在重启 Docker 服务..."
    sudo systemctl restart docker
    if [ $? -eq 0 ]; then
        echo "Docker 服务已成功重启。"
    else
        echo "Docker 服务重启失败,请检查日志。"
    fi
}

# 停止 Docker 服务
stop_docker() {
    echo "正在停止 Docker 服务..."
    sudo systemctl stop docker
    if [ $? -eq 0 ]; then
        echo "Docker 服务已停止。"
    else
        echo "Docker 服务停止失败,请检查日志。"
    fi
}

# 卸载 Docker 和 Docker Compose
uninstall_docker() {
    echo "正在卸载 Docker..."

    # 停止 Docker 服务
    sudo systemctl stop docker

    # 卸载 Docker
    sudo apt-get purge -y docker-ce docker-ce-cli containerd.io

    # 删除所有镜像、容器、卷和网络
    sudo rm -rf /var/lib/docker
    sudo rm -rf /var/lib/containerd

    echo "Docker 已卸载。"

    # 卸载 Docker Compose
    echo "正在卸载 Docker Compose..."

    sudo rm -f /usr/local/bin/docker-compose
    sudo rm -f /usr/bin/docker-compose

    echo "Docker Compose 已卸载。"
}

# 显示菜单
show_menu() {
    echo "=============================="
    echo "   Docker 管理脚本 (Debian 12)"
    echo "=============================="
    echo "1. 安装 Docker(包括 Docker Compose)"
    echo "2. 启动 Docker 服务"
    echo "3. 重启 Docker 服务"
    echo "4. 停止 Docker 服务"
    echo "5. 卸载 Docker(包括 Docker Compose)"
    echo "6. 退出"
    echo "=============================="
}

# =======================
# 主程序
# =======================

while true; do
    show_menu
    read -p "请输入你的选择 [1-6]:" choice
    case $choice in
        1)
            install_docker
            ;;
        2)
            start_docker
            ;;
        3)
            restart_docker
            ;;
        4)
            stop_docker
            ;;
        5)
            uninstall_docker
            ;;
        6)
            echo "退出脚本。"
            exit 0
            ;;
        *)
            echo "无效的选择,请重新输入。"
            ;;
    esac
    echo ""
done

🐧 Ubuntu Docker 管理脚本

📋 系统要求

  • Ubuntu 18.04 LTS 或更高版本
  • 具有sudo权限的用户账户
  • 稳定的网络连接

🚀 快速使用

# 保存脚本
vim docker_manager_ubuntu.sh

# 赋予执行权限
chmod +x docker_manager_ubuntu.sh

# 运行脚本
./docker_manager_ubuntu.sh

📄 完整脚本代码

#!/bin/bash
 
# docker_manager.sh
# 用于管理 Docker 和 Docker Compose 的交互脚本(适用于 Ubuntu)
 
# =======================
# 配置变量
# =======================
 
# Docker 仓库地址
DOCKER_REPO="https://download.docker.com/linux/ubuntu"
 
# =======================
# 函数定义
# =======================
 
# 安装 Docker 和 Docker Compose
install_docker() {
    echo "正在安装 Docker..."
 
    # 移除旧版本
    sudo apt-get remove -y docker docker-engine docker.io containerd runc
 
    # 更新包索引
    sudo apt-get update
 
    # 安装必要的软件包
    sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
 
    # 添加 Docker 的官方 GPG 密钥
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
 
    # 设置稳定的 Docker 仓库
    echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] $DOCKER_REPO $(lsb_release -cs) stable" | \
      sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
 
    # 更新包索引
    sudo apt-get update
 
    # 安装 Docker Engine、Docker CLI 和 containerd
    sudo apt-get install -y docker-ce docker-ce-cli containerd.io
 
    # 启动并设置开机自启
    sudo systemctl start docker
    sudo systemctl enable docker
 
    echo "Docker 安装完成。"
 
    # 安装 Docker Compose
    echo "正在安装 Docker Compose..."
 
    # 获取最新版本号
    DOCKER_COMPOSE_LATEST=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep tag_name | cut -d '"' -f 4)
 
    if [ -z "$DOCKER_COMPOSE_LATEST" ]; then
        echo "无法获取 Docker Compose 最新版本号。请手动检查 https://github.com/docker/compose/releases"
        return
    fi
 
    # 下载 Docker Compose 二进制文件
    sudo curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_LATEST}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
 
    # 授予可执行权限
    sudo chmod +x /usr/local/bin/docker-compose
 
    # 创建软链接(可选)
    sudo ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose
 
    # 验证安装
    if command -v docker-compose &> /dev/null; then
        echo "Docker Compose 安装完成,版本:$(docker-compose --version)"
    else
        echo "Docker Compose 安装失败。"
    fi
}
 
# 启动 Docker 服务
start_docker() {
    echo "正在启动 Docker 服务..."
    sudo systemctl start docker
    sudo systemctl enable docker
    echo "Docker 服务已启动。"
}
 
# 重启 Docker 服务
restart_docker() {
    echo "正在重启 Docker 服务..."
    sudo systemctl restart docker
    if [ $? -eq 0 ]; then
        echo "Docker 服务已成功重启。"
    else
        echo "Docker 服务重启失败,请检查日志。"
    fi
}
 
# 停止 Docker 服务
stop_docker() {
    echo "正在停止 Docker 服务..."
    sudo systemctl stop docker
    if [ $? -eq 0 ]; then
        echo "Docker 服务已停止。"
    else
        echo "Docker 服务停止失败,请检查日志。"
    fi
}
 
# 卸载 Docker 和 Docker Compose
uninstall_docker() {
    echo "正在卸载 Docker..."
 
    # 停止 Docker 服务
    sudo systemctl stop docker
 
    # 卸载 Docker
    sudo apt-get purge -y docker-ce docker-ce-cli containerd.io
 
    # 删除所有镜像、容器、卷和网络
    sudo rm -rf /var/lib/docker
    sudo rm -rf /var/lib/containerd
 
    echo "Docker 已卸载。"
 
    # 卸载 Docker Compose
    echo "正在卸载 Docker Compose..."
 
    sudo rm -f /usr/local/bin/docker-compose
    sudo rm -f /usr/bin/docker-compose
 
    echo "Docker Compose 已卸载。"
}
 
# 显示菜单
show_menu() {
    echo "=============================="
    echo "      Docker 管理脚本         "
    echo "=============================="
    echo "1. 安装 Docker(包括 Docker Compose)"
    echo "2. 启动 Docker 服务"
    echo "3. 重启 Docker 服务"
    echo "4. 停止 Docker 服务"
    echo "5. 卸载 Docker(包括 Docker Compose)"
    echo "6. 退出"
    echo "=============================="
}
 
# =======================
# 主程序
# =======================
 
while true; do
    show_menu
    read -p "请输入你的选择 [1-6]:" choice
    case $choice in
        1)
            install_docker
            ;;
        2)
            start_docker
            ;;
        3)
            restart_docker
            ;;
        4)
            stop_docker
            ;;
        5)
            uninstall_docker
            ;;
        6)
            echo "退出脚本。"
            exit 0
            ;;
        *)
            echo "无效的选择,请重新输入。"
            ;;
    esac
    echo ""
done

🐧 Kali Linux Docker 管理脚本

📋 系统要求

  • Kali Linux 2025.1 或更高版本
  • 具有sudo权限的用户账户
  • 稳定的网络连接

🚀 快速使用

# 保存脚本
vim docker_manager_kali.sh

# 赋予执行权限
chmod +x docker_manager_kali.sh

# 运行脚本
./docker_manager_kali.sh

📄 完整脚本代码

#!/bin/bash
 
# docker_manager.sh
# 用于管理 Docker 和 Docker Compose 的交互脚本
# 已转换为Kali Linux 2025.1兼容版本
 
# =======================
# 配置变量
# =======================
 
# Docker 仓库配置
DOCKER_REPO_URL="https://download.docker.com/linux/debian"
DOCKER_REPO_DIST="bookworm"
 
# =======================
# 函数定义
# =======================
 
# 安装 Docker 和 Docker Compose
install_docker() {
    echo "正在安装 Docker..."
 
    # 移除旧版本
    sudo apt remove -y docker docker.io containerd runc docker-engine
 
    # 安装必要的软件包
    sudo apt update
    sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
 
    # 创建目录以存储GPG密钥
    sudo mkdir -p /etc/apt/keyrings
 
    # 添加 Docker 官方 GPG 密钥
    curl -fsSL ${DOCKER_REPO_URL}/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
 
    # 添加 Docker 仓库
    echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] ${DOCKER_REPO_URL} ${DOCKER_REPO_DIST} stable" | \
    sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
 
    # 更新软件包索引
    sudo apt update
 
    # 安装 Docker
    sudo apt install -y docker-ce docker-ce-cli containerd.io
 
    # 启动并设置开机自启
    sudo systemctl start docker
    sudo systemctl enable docker
 
    # 添加当前用户到docker组
    sudo usermod -aG docker $USER
    echo "Docker 安装完成。请注意,要使用非root用户运行docker,您需要注销并重新登录。"
 
    # 安装 Docker Compose
    echo "正在安装 Docker Compose..."
 
    # 方法1:使用apt安装docker-compose-plugin
    sudo apt install -y docker-compose-plugin
    
    if command -v docker compose &> /dev/null; then
        echo "Docker Compose 插件安装完成,版本:$(docker compose version)"
    else
        echo "Docker Compose 插件安装失败,尝试使用二进制方法安装..."
        
        # 方法2:获取最新版本号
        DOCKER_COMPOSE_LATEST=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep tag_name | cut -d '"' -f 4)
        
        if [ -z "$DOCKER_COMPOSE_LATEST" ]; then
            echo "无法获取 Docker Compose 最新版本号。请手动检查 https://github.com/docker/compose/releases"
            return
        fi
        
        # 下载 Docker Compose 二进制文件
        sudo curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_LATEST}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
        
        # 授予可执行权限
        sudo chmod +x /usr/local/bin/docker-compose
        
        # 创建软链接(可选)
        sudo ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose
        
        # 验证安装
        if command -v docker-compose &> /dev/null; then
            echo "Docker Compose 安装完成,版本:$(docker-compose --version)"
        else
            echo "Docker Compose 安装失败。"
        fi
    fi
}
 
# 启动 Docker 服务
start_docker() {
    echo "正在启动 Docker 服务..."
    sudo systemctl start docker
    sudo systemctl enable docker
    echo "Docker 服务已启动。"
}
 
# 重启 Docker 服务
restart_docker() {
    echo "正在重启 Docker 服务..."
    sudo systemctl restart docker
    if [ $? -eq 0 ]; then
        echo "Docker 服务已成功重启。"
    else
        echo "Docker 服务重启失败,请检查日志。"
    fi
}
 
# 停止 Docker 服务
stop_docker() {
    echo "正在停止 Docker 服务..."
    sudo systemctl stop docker
    if [ $? -eq 0 ]; then
        echo "Docker 服务已停止。"
    else
        echo "Docker 服务停止失败,请检查日志。"
    fi
}
 
# 卸载 Docker 和 Docker Compose
uninstall_docker() {
    echo "正在卸载 Docker..."
 
    # 停止 Docker 服务
    sudo systemctl stop docker
 
    # 卸载 Docker
    sudo apt purge -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
    sudo apt autoremove -y
 
    # 删除所有镜像、容器、卷和网络
    sudo rm -rf /var/lib/docker
    sudo rm -rf /var/lib/containerd
 
    echo "Docker 已卸载。"
 
    # 卸载 Docker Compose
    echo "正在卸载 Docker Compose..."
 
    sudo rm -f /usr/local/bin/docker-compose
    sudo rm -f /usr/bin/docker-compose
 
    echo "Docker Compose 已卸载。"
}
 
# 显示菜单
show_menu() {
    echo "=============================="
    echo "      Docker 管理脚本         "
    echo "=============================="
    echo "1. 安装 Docker(包括 Docker Compose)"
    echo "2. 启动 Docker 服务"
    echo "3. 重启 Docker 服务"
    echo "4. 停止 Docker 服务"
    echo "5. 卸载 Docker(包括 Docker Compose)"
    echo "6. 退出"
    echo "=============================="
}
 
# =======================
# 主程序
# =======================
 
while true; do
    show_menu
    read -p "请输入你的选择 [1-6]:" choice
    case $choice in
        1)
            install_docker
            ;;
        2)
            start_docker
            ;;
        3)
            restart_docker
            ;;
        4)
            stop_docker
            ;;
        5)
            uninstall_docker
            ;;
        6)
            echo "退出脚本。"
            exit 0
            ;;
        *)
            echo "无效的选择,请重新输入。"
            ;;
    esac
    echo ""
done

🔧 使用说明

📝 通用操作步骤

  1. 选择适合的脚本

  2. 下载并准备脚本

    # 创建脚本文件
    vim docker_manager.sh
    
    # 复制对应的脚本内容
    # 保存并退出
    
    # 赋予执行权限
    chmod +x docker_manager.sh
    
  3. 运行脚本

    ./docker_manager.sh
    
  4. 选择操作

    • 输入数字 1-6 选择对应功能
    • 按照提示完成操作

🎯 菜单功能说明

选项功能说明
1安装 Docker完整安装Docker CE和Docker Compose
2启动服务启动Docker服务并设置开机自启
3重启服务重启Docker服务
4停止服务停止Docker服务
5卸载 Docker完全卸载Docker和相关组件
6退出脚本退出管理程序

⚠️ 注意事项

🛡️ 安全提醒

  • 权限要求: 所有操作都需要sudo权限
  • 网络访问: 安装过程需要访问Docker官方仓库
  • 系统影响: 卸载功能会删除所有Docker数据

🔍 常见问题

Q: 安装失败怎么办?

  • 检查网络连接是否正常
  • 确认系统版本是否支持
  • 查看错误日志进行排查

Q: Docker Compose安装失败?

  • 脚本会自动尝试多种安装方法
  • 手动安装:sudo apt install docker-compose-plugin

Q: 非root用户无法使用docker?

  • 执行:sudo usermod -aG docker $USER
  • 注销并重新登录系统

📊 版本兼容性

系统最低版本推荐版本
CentOS7.08.0+
Ubuntu18.04 LTS20.04 LTS+
Kali Linux2020.12025.1+

📞 技术支持

如遇到问题,请:

  1. 检查系统日志:sudo journalctl -u docker
  2. 查看Docker状态:sudo systemctl status docker
  3. 参考官方文档:Docker Documentation

文档版本:v1.0 | 最后更新:2025年6月