Files
SecMPS/owl_zlmediakit/scripts/install-docker.sh
2026-05-15 23:22:48 +08:00

108 lines
2.9 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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}"