From 97b9adee75aa763f1da6fb5898068f4cc7203333 Mon Sep 17 00:00:00 2001 From: xzx3344521 Date: Tue, 28 Oct 2025 22:26:34 +0800 Subject: [PATCH] Create Docker 24.0.5 --- Docker 24.0.5 | 208 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 208 insertions(+) create mode 100644 Docker 24.0.5 diff --git a/Docker 24.0.5 b/Docker 24.0.5 new file mode 100644 index 0000000..0505381 --- /dev/null +++ b/Docker 24.0.5 @@ -0,0 +1,208 @@ +#!/bin/bash +set -e + +echo "==========================================" +echo " Docker 24.0.5 一键离线安装脚本" +echo "==========================================" + +# 颜色定义 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' + +# 日志函数 +log_info() { + echo -e "${GREEN}[INFO]${NC} $1" +} + +log_warn() { + echo -e "${YELLOW}[WARN]${NC} $1" +} + +log_error() { + echo -e "${RED}[ERROR]${NC} $1" +} + +# 检查root权限 +check_root() { + if [[ $EUID -ne 0 ]]; then + log_error "请使用root权限运行此脚本" + exit 1 + fi +} + +# 安装依赖 +install_dependencies() { + log_info "安装系统依赖..." + apt-get update + apt-get install -y \ + curl \ + wget \ + gnupg \ + lsb-release \ + apt-transport-https \ + ca-certificates \ + software-properties-common \ + iptables \ + net-tools +} + +# 清理有问题的docker源 +clean_docker_sources() { + log_info "清理有问题的Docker源..." + if [ -f "/etc/apt/sources.list.d/docker.list" ]; then + mv /etc/apt/sources.list.d/docker.list /etc/apt/sources.list.d/docker.list.backup.$(date +%Y%m%d%H%M%S) + log_info "已备份并清理原有docker源配置" + fi +} + +# 下载Docker 24.0.5离线包 +download_docker_packages() { + log_info "创建临时下载目录..." + DOWNLOAD_DIR="/tmp/docker-offline-24.0.5" + mkdir -p $DOWNLOAD_DIR + cd $DOWNLOAD_DIR + + log_info "开始下载Docker 24.0.5离线安装包..." + + # Docker 24.0.5 组件包 + packages=( + "containerd.io_1.6.21-1_amd64.deb" + "docker-ce_24.0.5-1~ubuntu.20.04~focal_amd64.deb" + "docker-ce-cli_24.0.5-1~ubuntu.20.04~focal_amd64.deb" + "docker-buildx-plugin_0.11.2-1~ubuntu.20.04~focal_amd64.deb" + "docker-compose-plugin_2.20.2-1~ubuntu.20.04~focal_amd64.deb" + ) + + # 下载URL基础路径(这里使用官方源,您可以根据需要替换为内网源) + BASE_URL="https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64" + + for package in "${packages[@]}"; do + if [ ! -f "$package" ]; then + log_info "下载: $package" + wget -q "$BASE_URL/$package" + if [ $? -ne 0 ]; then + log_error "下载失败: $package" + log_info "尝试备用下载源..." + # 备用下载源 + wget -q "https://mirrors.aliyun.com/docker-ce/linux/ubuntu/dists/focal/pool/stable/amd64/$package" || { + log_error "备用源也下载失败: $package" + return 1 + } + fi + else + log_info "文件已存在: $package" + fi + done + + log_info "所有Docker组件下载完成!" +} + +# 安装Docker组件 +install_docker_packages() { + log_info "开始安装Docker组件..." + DOWNLOAD_DIR="/tmp/docker-offline-24.0.5" + cd $DOWNLOAD_DIR + + # 安装顺序很重要 + dpkg -i containerd.io_1.6.21-1_amd64.deb + dpkg -i docker-ce-cli_24.0.5-1~ubuntu.20.04~focal_amd64.deb + dpkg -i docker-ce_24.0.5-1~ubuntu.20.04~focal_amd64.deb + dpkg -i docker-buildx-plugin_0.11.2-1~ubuntu.20.04~focal_amd64.deb + dpkg -i docker-compose-plugin_2.20.2-1~ubuntu.20.04~focal_amd64.deb + + log_info "Docker组件安装完成!" +} + +# 配置Docker服务 +configure_docker() { + log_info "配置Docker服务..." + + # 创建docker用户组 + groupadd docker 2>/dev/null || true + + # 配置docker daemon + mkdir -p /etc/docker + cat > /etc/docker/daemon.json << EOF +{ + "exec-opts": ["native.cgroupdriver=systemd"], + "log-driver": "json-file", + "log-opts": { + "max-size": "100m" + }, + "storage-driver": "overlay2", + "registry-mirrors": [ + "https://docker.mirrors.ustc.edu.cn", + "https://hub-mirror.c.163.com" + ] +} +EOF + + # 启动并启用docker服务 + systemctl daemon-reload + systemctl enable docker + systemctl start docker + + log_info "等待Docker服务启动..." + sleep 5 +} + +# 验证安装 +verify_installation() { + log_info "验证Docker安装..." + + # 检查docker版本 + docker --version + docker-compose --version + + # 测试运行容器 + if systemctl is-active --quiet docker; then + log_info "测试运行hello-world容器..." + docker run --rm hello-world && { + log_info "✅ Docker安装验证成功!" + } || { + log_warn "Docker服务运行但hello-world测试失败,可能是网络问题" + } + else + log_error "Docker服务未运行" + return 1 + fi +} + +# 显示使用说明 +show_usage() { + log_info "安装完成!使用说明:" + echo "" + echo "1. 启动Docker服务: systemctl start docker" + echo "2. 停止Docker服务: systemctl stop docker" + echo "3. 查看Docker状态: systemctl status docker" + echo "4. 添加用户到docker组: usermod -aG docker \$USER" + echo "5. 重新登录后即可不使用sudo运行docker命令" + echo "" + echo "Docker版本: 24.0.5" + echo "Compose版本: 2.20.2" + echo "Buildx版本: 0.11.2" +} + +# 主函数 +main() { + log_info "开始Docker 24.0.5一键安装..." + + check_root + install_dependencies + clean_docker_sources + download_docker_packages + install_docker_packages + configure_docker + verify_installation + show_usage + + log_info "Docker 24.0.5 安装完成!" +} + +# 错误处理 +trap 'log_error "脚本执行失败,退出码: $?"; exit 1' ERR + +# 执行主函数 +main "$@"