Files
ljwx-k8s/setup-orbstack-registry-mirror.sh
2026-02-20 22:50:45 +08:00

116 lines
2.6 KiB
Bash
Executable File

#!/bin/bash
# OrbStack Registry Mirror 配置脚本
# 用途:配置本地 Harbor 作为 Docker Hub 镜像加速器
set -e
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_warning() { echo -e "${YELLOW}[!]${NC} $1"; }
ORBSTACK_CONFIG="$HOME/.orbstack/config/docker.json"
HARBOR_MIRROR="http://harbor.omniverseai.net:8080"
echo ""
log_info "=== OrbStack Registry Mirror 配置 ==="
echo ""
# 备份现有配置
if [[ -f "$ORBSTACK_CONFIG" ]]; then
BACKUP="${ORBSTACK_CONFIG}.backup.$(date +%Y%m%d_%H%M%S)"
cp "$ORBSTACK_CONFIG" "$BACKUP"
log_info "已备份现有配置: $BACKUP"
fi
# 创建配置目录
mkdir -p "$(dirname "$ORBSTACK_CONFIG")"
# 生成配置
cat > "$ORBSTACK_CONFIG" << EOF
{
"registry-mirrors": [
"$HARBOR_MIRROR"
],
"insecure-registries": [
"$HARBOR_MIRROR",
"harbor.omniverseai.net:8080",
"192.168.1.83:8080"
],
"max-concurrent-downloads": 10,
"max-concurrent-uploads": 5,
"log-level": "info"
}
EOF
log_success "配置已写入: $ORBSTACK_CONFIG"
echo ""
cat "$ORBSTACK_CONFIG"
echo ""
log_warning "需要重启 OrbStack 使配置生效"
echo ""
read -p "是否立即重启 OrbStack? (y/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
log_info "正在重启 OrbStack..."
# 退出 OrbStack 应用
osascript -e 'quit app "OrbStack"' 2>/dev/null || pkill -9 OrbStack
log_info "等待 OrbStack 完全退出..."
sleep 3
# 重新启动 OrbStack
open -a OrbStack
log_success "OrbStack 已重启"
echo ""
log_info "等待 OrbStack 启动(约 10 秒)..."
# 等待 Docker 守护进程就绪
for i in {1..20}; do
if docker info &>/dev/null; then
break
fi
sleep 1
done
sleep 3
# 验证
log_info "验证配置..."
if docker info 2>/dev/null | grep -q "Registry Mirrors"; then
log_success "Registry Mirror 配置已生效"
docker info | grep -A 5 "Registry Mirrors"
else
log_warning "未检测到 Registry Mirror 配置,请手动检查"
fi
else
echo ""
log_warning "请手动重启 OrbStack:"
echo ""
echo " 方式 1: 使用命令行"
echo " osascript -e 'quit app \"OrbStack\"'"
echo " sleep 3"
echo " open -a OrbStack"
echo ""
echo " 方式 2: 使用 GUI"
echo " OrbStack 菜单栏 → Quit OrbStack"
echo " 然后重新打开 OrbStack 应用"
fi
echo ""
log_success "✅ 配置完成"
echo ""
echo "测试命令:"
echo " docker pull nginx:alpine"
echo " docker pull redis:7-alpine"
echo ""