- الرئيسية
- حاوية التطوير
- استكشاف الأخطاء وإصلاحها
استكشاف الأخطاء وإصلاحها
الحاوية لا تبدأ
Section titled “الحاوية لا تبدأ””Conflict. The container name is already in use”
Section titled “”Conflict. The container name is already in use””docker rm -f devcontainerdocker compose up -dpodman rm -f devcontainerpodman-compose up -dأدوات الذكاء الاصطناعي لا تعمل
Section titled “أدوات الذكاء الاصطناعي لا تعمل””claude: command not found”
Section titled “”claude: command not found””قد تكون الصورة قديمة. اسحب أحدث إصدار وأعد التشغيل:
docker compose pulldocker compose up -dpodman-compose pullpodman-compose up -dClaude يظهر “Not logged in”
Section titled “Claude يظهر “Not logged in””نقطة الدخول تُنشئ ملف ~/.claude.json مع إشارات الإعداد الأولي. إذا كان مفقوداً:
echo '{"hasCompletedOnboarding": true}' > ~/.claude.jsonClaude يظهر “Invalid API key”
Section titled “Claude يظهر “Invalid API key””تحقق من القيمة المُعيَّنة فعلياً:
echo "$ANTHROPIC_API_KEY"الأسباب الشائعة:
- مفتاح وكيل LiteLLM مفقود أو غير صالح — إذا كنت تستخدم وضع الوكيل، تأكد من أن
LITELLM_API_KEYفي.envيحتوي على بيانات اعتماد الوكيل الصحيحة، ثم أعد تشغيل الحاوية حتى تتمكن نقطة الدخول من اشتقاقANTHROPIC_API_KEY. - عدم تطابق رمز OAuth أو وضع الوكيل — استخدم وضع مصادقة واحد فقط. إذا تم تعيين
CLAUDE_CODE_OAUTH_TOKEN، فإنه يأخذ الأولوية على وضع وكيل LiteLLM.
طلبات API تفشل مع خطأ 401
Section titled “طلبات API تفشل مع خطأ 401”تحقق من أن مفتاح API مُعيَّن بشكل صحيح:
echo "$ANTHROPIC_API_KEY"تحقق من عمله عن طريق إجراء استدعاء مباشر لمزود الخدمة الخاص بك.
Claude يقول “model not found”
Section titled “Claude يقول “model not found””يتم تحديد النموذج بواسطة مزود الخدمة ومفتاح API الخاص بك. راجع وثائق مزود الخدمة للاطلاع على النماذج المتاحة.
واجهة سطر أوامر GitHub
Section titled “واجهة سطر أوامر GitHub””gh: not authenticated”
Section titled “”gh: not authenticated””واجهة سطر أوامر gh تتطلب متغير بيئة GH_TOKEN. أضفه إلى ملف .env الخاص بك:
GH_TOKEN=ghp_your-token-hereأنشئ رمزاً في github.com/settings/tokens. الرموز الدقيقة (موصى بها) أو الرموز الكلاسيكية مع نطاق repo كلاهما يعمل. أعد تشغيل الحاوية بعد تحديث .env.
استنساخ HTTPS عبر git يفشل مع خطأ 401
Section titled “استنساخ HTTPS عبر git يفشل مع خطأ 401”عند تعيين GH_TOKEN، تقوم نقطة الدخول بتشغيل gh auth setup-git لتكوين مساعد بيانات اعتماد git لـ HTTPS. إذا فشلت عمليات HTTPS:
- تحقق من صلاحية الرمز:
gh auth status - تحقق من تكوين مساعد بيانات الاعتماد:
git config --global credential.helper - أعد تشغيل الحاوية لإعادة تشغيل نقطة الدخول
SSH مقابل HTTPS
Section titled “SSH مقابل HTTPS”يمكن لكلتا طريقتي المصادقة التعايش في الحاوية:
- SSH (
SSH_PRIVATE_KEYفي.env) — يستخدم عناوينgit@github.com:. مطلوب إذا كانت مؤسستك تفرض SSH. - HTTPS (
GH_TOKENفي.env) — يستخدم عناوينhttps://github.com/. إعداد أبسط، بدون إدارة مفاتيح.
إذا تم تكوين كليهما، يستخدم git البروتوكول الذي يتطابق مع عنوان URL البعيد. للتبديل في استنساخ موجود:
# SSH to HTTPSgit remote set-url origin https://github.com/owner/repo.git
# HTTPS to SSHgit remote set-url origin git@github.com:owner/repo.gitمشكلات الصلاحيات
Section titled “مشكلات الصلاحيات””Permission denied” على /workspace أو /home
Section titled “”Permission denied” على /workspace أو /home”sudo chown -R $(id -u):$(id -g) /workspace ~فشل npm install مع خطأ EACCES
Section titled “فشل npm install مع خطأ EACCES”تقوم نقطة الدخول تلقائياً بتكوين بادئة npm عامة قابلة للكتابة بواسطة المستخدم في ~/.npm-global، لذا يجب أن تعمل أوامر npm install -g أثناء التشغيل بدون sudo. إذا كنت لا تزال ترى أخطاء EACCES، أعد تطبيق الإصلاح يدوياً:
mkdir -p ~/.npm-globalnpm config set prefix ~/.npm-globalexport PATH="$HOME/.npm-global/bin:$PATH"مشكلات البناء
Section titled “مشكلات البناء”البناء يستغرق وقتاً طويلاً جداً
Section titled “البناء يستغرق وقتاً طويلاً جداً”أول عملية بناء تقوم بتنزيل الصورة الأساسية (~1 جيجابايت). عمليات البناء اللاحقة تستخدم ذاكرة التخزين المؤقت. إذا كان بطيئاً في كل مرة:
docker builder prunepodman builder prune“No space left on device”
Section titled ““No space left on device””docker system prune -a --volumespodman system prune -a --volumesتحذير: هذا يزيل جميع الحاويات والصور ووحدات التخزين غير المستخدمة — وليس فقط الخاصة بهذا المشروع.
الشبكات
Section titled “الشبكات”لا يمكن الوصول إلى الإنترنت من داخل الحاوية
Section titled “لا يمكن الوصول إلى الإنترنت من داخل الحاوية”ping -c 1 8.8.8.8nslookup google.comcurl -I https://github.comإذا فشل DNS، أضف إلى /etc/docker/daemon.json على المضيف:
{ "dns": ["8.8.8.8", "8.8.4.4"]}ثم أعد تشغيل Docker.
إذا فشل DNS، قم بتكوين DNS داخل جهاز Podman الافتراضي:
podman machine sshsudo sh -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'exitأو أضف إعدادات DNS إلى ~/.config/containers/containers.conf على المضيف:
[containers]dns_servers = ["8.8.8.8", "8.8.4.4"]ثم أعد تشغيل Podman: podman machine stop && podman machine start.
العرض عن بُعد (noVNC)
Section titled “العرض عن بُعد (noVNC)”شاشة سوداء في noVNC
Section titled “شاشة سوداء في noVNC”قد لا يكون Xvfb قد بدأ. تحقق داخل الحاوية:
ps aux | grep Xvfbإذا لم يكن قيد التشغيل، تحقق من أن ENABLE_VNC غير مُعيَّن على false وأعد تشغيل الحاوية.
خطأ “Cannot open display” أو “No display”
Section titled “خطأ “Cannot open display” أو “No display””قد لا يكون متغير البيئة DISPLAY مُعيَّناً. تحقق:
echo "$DISPLAY"يجب أن يكون :99. إذا كان فارغاً، أضف DISPLAY=:99 إلى .env أو devcontainer.json وأعد التشغيل.
رفض الاتصال على المنفذ 6080
Section titled “رفض الاتصال على المنفذ 6080”قد لا يكون noVNC قيد التشغيل. تحقق داخل الحاوية:
ps aux | grep -E 'novnc|websockify'إذا لم يكن قيد التشغيل، تحقق من أن ENABLE_VNC مُعيَّن على true (الافتراضي) وراجع سجلات الحاوية:
docker compose logs dev | grep -i vncpodman-compose logs dev | grep -i vncالمنفذ 6080 قيد الاستخدام بالفعل
Section titled “المنفذ 6080 قيد الاستخدام بالفعل”غيّر منفذ المضيف في docker-compose.yml:
ports: - "127.0.0.1:16080:6080"أدوات مطوري Chrome عبر MCP
Section titled “أدوات مطوري Chrome عبر MCP”تصحيح أخطاء Chrome عن بُعد لا يستجيب
Section titled “تصحيح أخطاء Chrome عن بُعد لا يستجيب”يجب أن يكون مثيل Chrome المشترك قيد التشغيل على المنفذ 9222. تحقق داخل الحاوية:
# Is Chrome running?curl http://localhost:9222/json/version
# Check Chrome logscat ~/.local/share/chrome-browser/chrome.log
# Verify the symlinkls -la /opt/google/chrome/chrome
# Restart Chrome manually. /usr/local/lib/chrome-browser.shstart_chrome_browserإذا كان الرابط الرمزي مفقوداً، اسحب أحدث صورة وأعد تشغيل الحاوية.
خطأ قفل ملف تعريف المتصفح
Section titled “خطأ قفل ملف تعريف المتصفح”مع بنية المتصفح المشترك، لا ينبغي أن تحدث أخطاء قفل الملف الشخصي. إذا رأيت واحداً، فقد تكون عملية Chrome قديمة تحتفظ بالقفل:
# Kill any stale Chrome processespkill -f 'chrome.*remote-debugging-port' || true
# Remove the lock filerm -f ~/.cache/chrome-devtools-mcp/chrome-profile/SingletonLock
# Restart Chrome. /usr/local/lib/chrome-browser.shstart_chrome_browserأدوات chrome-devtools-mcp مكررة
Section titled “أدوات chrome-devtools-mcp مكررة”خادم chrome-devtools-mcp مسجل الآن عالمياً في ~/.claude/settings.json. إذا كان لديك ملف .mcp.json خاص بالمستودع يسجله أيضاً، فسترى أدوات مكررة. أزل إدخال chrome-devtools-mcp من ملفات .mcp.json الخاصة بالمستودع:
# Check for per-repo configcat .mcp.jsonأزل مفتاح chrome-devtools-mcp من أي ملف .mcp.json خاص بالمستودع لاستخدام التسجيل العالمي.
إعادة تعيين كل شيء
Section titled “إعادة تعيين كل شيء”docker compose down -vdocker rm -f devcontainer 2>/dev/nulldocker compose pulldocker compose up -dpodman-compose down -vpodman rm -f devcontainer 2>/dev/nullpodman-compose pullpodman-compose up -dهذا يدمر جميع البيانات في وحدات التخزين. ستحتاج إلى إعادة استنساخ المستودعات وإعادة تكوين الأدوات.