116 lines
2.6 KiB
Bash
Executable File
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 ""
|