#!/bin/bash # Docker 离线安装脚本(ARM64) # 适用于统信UOS20 / 龙蜥 / 欧拉 / Debian ARM64 set -e DOCKER_VERSION="27.5.1" COMPOSE_VERSION="2.29.1" INSTALL_DIR="/usr/bin" # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color echo -e "${GREEN}========================================${NC}" echo -e "${GREEN} Docker CE 离线安装脚本 (ARM64) ${NC}" echo -e "${GREEN}========================================${NC}" # 检查架构 ARCH=$(uname -m) if [ "$ARCH" != "aarch64" ]; then echo -e "${RED}错误: 当前架构为 $ARCH,本脚本仅支持 aarch64 (ARM64)${NC}" exit 1 fi # 检查root权限 if [ "$EUID" -ne 0 ]; then echo -e "${RED}错误: 请使用 root 用户运行本脚本${NC}" exit 1 fi # 检查安装包是否存在 if [ ! -f "docker-${DOCKER_VERSION}.tgz" ]; then echo -e "${RED}错误: 未找到 docker-${DOCKER_VERSION}.tgz${NC}" echo "请确保安装包位于当前目录" exit 1 fi echo -e "${YELLOW}[1/6] 正在解压 Docker 安装包...${NC}" tar -xzf "docker-${DOCKER_VERSION}.tgz" echo -e "${YELLOW}[2/6] 正在复制可执行文件...${NC}" cp -p docker/* "${INSTALL_DIR}/" # 安装 docker-compose if [ -f "docker-compose-linux-aarch64" ]; then echo -e "${YELLOW}[3/6] 正在安装 Docker Compose...${NC}" cp -p docker-compose-linux-aarch64 "${INSTALL_DIR}/docker-compose" chmod +x "${INSTALL_DIR}/docker-compose" else echo -e "${YELLOW}[3/6] 跳过 Docker Compose (未找到安装包)${NC}" fi echo -e "${YELLOW}[4/6] 正在创建 systemd 服务...${NC}" cat > /etc/systemd/system/docker.service << 'EOF' [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target firewalld.service Wants=network-online.target [Service] Type=notify ExecStart=/usr/bin/dockerd ExecReload=/bin/kill -s HUP $MAINPID LimitNOFILE=infinity LimitNPROC=infinity TimeoutStartSec=0 Delegate=yes KillMode=process Restart=on-failure StartLimitBurst=3 StartLimitInterval=60s [Install] WantedBy=multi-user.target EOF echo -e "${YELLOW}[5/6] 正在启动 Docker 服务...${NC}" systemctl daemon-reload systemctl start docker systemctl enable docker # 创建 docker 组 if ! getent group docker > /dev/null 2>&1; then groupadd docker fi echo -e "${YELLOW}[6/6] 验证安装...${NC}" if docker --version; then echo -e "${GREEN}========================================${NC}" echo -e "${GREEN} Docker 安装成功! ${NC}" echo -e "${GREEN}========================================${NC}" docker --version docker-compose --version 2>/dev/null || true else echo -e "${RED}Docker 安装可能失败,请检查日志${NC}" exit 1 fi # 清理临时文件 rm -rf docker/ echo -e "${GREEN}安装完成!${NC}" echo -e "${YELLOW}提示: 如需非root用户使用docker,请执行: usermod -aG docker <用户名>${NC}"