Files
macos-tools/harbor/optimize-docker-daemon.sh
2025-12-24 13:42:39 +08:00

107 lines
2.9 KiB
Bash
Executable File

#!/bin/bash
# Docker Daemon 配置优化脚本
set -e
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
log_success() { echo -e "${GREEN}[✓]${NC} $1"; }
log_error() { echo -e "${RED}[✗]${NC} $1"; }
log_warning() { echo -e "${YELLOW}[!]${NC} $1"; }
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
OPTIMIZED_CONFIG="${SCRIPT_DIR}/docker-daemon-optimized.json"
log_info "=== Docker Daemon 配置优化 ==="
echo ""
# 检查 Docker 运行环境
if command -v docker &> /dev/null; then
DOCKER_INFO=$(docker info 2>&1)
if echo "$DOCKER_INFO" | grep -q "OrbStack"; then
log_info "检测到 OrbStack 环境"
DOCKER_TYPE="orbstack"
CONFIG_PATH="$HOME/.orbstack/config/docker.json"
elif echo "$DOCKER_INFO" | grep -q "Docker Desktop"; then
log_info "检测到 Docker Desktop 环境"
DOCKER_TYPE="docker-desktop"
CONFIG_PATH="$HOME/.docker/daemon.json"
else
log_warning "未知的 Docker 环境"
DOCKER_TYPE="unknown"
CONFIG_PATH="$HOME/.docker/daemon.json"
fi
else
log_error "Docker 未安装或未运行"
exit 1
fi
echo ""
log_info "配置位置: $CONFIG_PATH"
echo ""
# 备份现有配置
if [[ -f "$CONFIG_PATH" ]]; then
BACKUP_PATH="${CONFIG_PATH}.backup.$(date +%Y%m%d_%H%M%S)"
log_info "备份现有配置..."
cp "$CONFIG_PATH" "$BACKUP_PATH"
log_success "已备份到: $BACKUP_PATH"
echo ""
log_info "当前配置:"
cat "$CONFIG_PATH" | python3 -m json.tool 2>/dev/null || cat "$CONFIG_PATH"
echo ""
fi
# 显示优化配置
log_info "优化后的配置:"
cat "$OPTIMIZED_CONFIG" | python3 -m json.tool
echo ""
# 询问是否应用
log_warning "此操作将替换 Docker daemon 配置"
read -p "确认应用优化配置? (y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
log_info "已取消"
exit 0
fi
# 创建配置目录
mkdir -p "$(dirname "$CONFIG_PATH")"
# 应用配置
log_info "应用优化配置..."
cp "$OPTIMIZED_CONFIG" "$CONFIG_PATH"
log_success "配置已更新"
echo ""
log_warning "需要重启 Docker 以使配置生效"
echo ""
if [[ "$DOCKER_TYPE" == "orbstack" ]]; then
echo "OrbStack 重启方法:"
echo " 1. 使用命令: orb restart"
echo " 2. 或在 GUI 中: OrbStack 菜单 → Restart"
elif [[ "$DOCKER_TYPE" == "docker-desktop" ]]; then
echo "Docker Desktop 重启方法:"
echo " 1. 菜单栏 Docker 图标 → Restart"
echo " 2. 或使用命令: osascript -e 'quit app \"Docker\"' && open -a Docker"
fi
echo ""
log_info "配置优化说明:"
echo " • max-concurrent-downloads: 6 并发下载数提升到6"
echo " • max-download-attempts: 5 失败重试次数5次"
echo " • max-concurrent-uploads: 5 并发上传数5"
echo " • insecure-registries 信任的私有仓库"
echo ""
log_success "✅ 优化完成!请重启 Docker 后生效"