107 lines
2.9 KiB
Bash
Executable File
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 后生效"
|