diff --git a/121 b/121 index 72736a0..a1d85f0 100644 --- a/121 +++ b/121 @@ -1,30 +1,67 @@ -cat << 'EOF' > env_check.sh +cat << 'EOF' > docker_install.sh #!/bin/bash -echo "========== 正在收集系统环境信息 ==========" -echo "[1/6] 架构检查:" -uname -m -dpkg --print-architecture -echo -e "\n[2/6] 内核与系统版本:" -uname -a -lsb_release -a 2>/dev/null || cat /etc/issue +# 颜色定义 +GREEN='\033[0;32m' +RED='\033[0;31m' +NC='\033[0m' -echo -e "\n[3/6] 存储空间检查 (/vol1/1000/dock):" -df -h /vol1/1000 2>/dev/null || echo "警告: /vol1/1000 目录未挂载或不存在" +echo -e "${GREEN}===== 开始针对 ARM64 设备安装 Docker =====${NC}" -echo -e "\n[4/6] 检查残留的安装包与进程:" -dpkg -l | grep -E "docker|containerd|runc" | awk '{print $2, $3}' -ps aux | grep -E "dockerd|containerd" | grep -v grep +# 1. 彻底清理环境 +echo "[1/4] 清理旧的配置与冲突源..." +rm -f /etc/apt/sources.list.d/docker.list* +apt-get remove -y docker docker-engine docker.io containerd runc >/dev/null 2>&1 -echo -e "\n[5/6] 检查异常的软件源配置 (可能导致报错的原因):" -ls /etc/apt/sources.list.d/ -grep -r "docker" /etc/apt/sources.list* +# 2. 下载适配 aarch64 的官方二进制包 +echo "[2/4] 下载 Docker 二进制包 (aarch64)..." +cd /tmp +# 使用静态编译版,不依赖系统版本,兼容性最强 +curl -L -o docker-static.tgz https://download.docker.com/linux/static/stable/aarch64/docker-26.1.4.tgz -echo -e "\n[6/6] 网络测试 (Docker官方连接性):" -curl -I -s --connect-timeout 5 https://download.docker.com > /dev/null && echo "可以访问 Docker 官方源" || echo "无法访问 Docker 官方源" +# 3. 解压并部署 +echo "[3/4] 解压并安装二进制文件..." +tar xzvf docker-static.tgz >/dev/null +cp docker/* /usr/bin/ +rm -rf docker docker-static.tgz -echo -e "\n========== 检查完成 ==========" +# 4. 配置并启动服务 +echo "[4/4] 配置系统服务..." +# 创建最小化配置 +mkdir -p /etc/docker +cat < /etc/docker/daemon.json +{ + "registry-mirrors": ["https://docker.m.daocloud.io"] +} +DOCKER_CONF + +# 编写 systemd 服务文件 +cat < /etc/systemd/system/docker.service +[Unit] +Description=Docker Application Container Engine +After=network-online.target +[Service] +Type=notify +ExecStart=/usr/bin/dockerd +Restart=on-failure +[Install] +WantedBy=multi-user.target +SERVICE_CONF + +# 启动服务 +systemctl daemon-reload +systemctl enable docker +systemctl restart docker + +# 结果验证 +if docker --version >/dev/null 2>&1; then + echo -e "${GREEN}Docker 安装成功!${NC}" + docker --version +else + echo -e "${RED}安装失败,请检查网络或日志。${NC}" +fi EOF -chmod +x env_check.sh -./env_check.sh \ No newline at end of file +# 运行脚本 +chmod +x docker_install.sh +./docker_install.sh \ No newline at end of file