استكشاف الأخطاء وإصلاحها
تشخيص حالات تعطل بدء التشغيل وقيود AppArmor وشبكة BuildKit ووحدة تخزين الأسرار وأخطاء مصادقة البوابة.
أين كلمة مرور المدير عند بدء التشغيل الأول؟
تُطبع مرة واحدة في سجل منصة التحكم عند إنشاء الحساب، ولا تُعرض في موضع آخر:
docker compose logs control-plane | grep -A6 'FIRST-BOOT ADMIN'
إذا ضُبط DSH_ADMIN_PASSWORD قبل التشغيل الأول، فلا تُطبع كلمة مرور؛ استخدموا القيمة التي ضبطتموها.
تعذر بدء Postgres على خادم Proxmox أو Debian
تتضمن الحالات المسجلة على هذه الخوادم منع AppArmor وصول Postgres إلى مقبس Unix الخاص به. يوضح المثال التالي تجاوزاً للخدمات المتأثرة. يؤدي apparmor=unconfined إلى تعطيل تقييد AppArmor لهذه الحاويات؛ استخدموه بعد تأكيد السبب ومراجعة أثره الأمني:
# ملف التجاوز: docker-compose.override.yml
services:
postgres:
security_opt: ["apparmor=unconfined"]
control-plane:
security_opt: ["apparmor=unconfined"]
gateway:
security_opt: ["apparmor=unconfined"]
يرتبط هذا التجاوز بإعدادات الخادم المتأثر، ولا يلزم إضافته إلى كل نشر. راجعوا وثائق Docker عن AppArmor لفهم سلوك ملفات الحماية.
فشل بناء صورة بسبب تعذر الوصول إلى الشبكة
في الحالات المسجلة على خوادم Docker التي تعمل ضمن Proxmox أو Debian، تعذر الوصول إلى الشبكة من خطوات RUN لدى منشئ BuildKit الافتراضي. إذا كان هذا هو سبب فشل خطوة تعتمد على الشبكة، مثل تثبيت الحزم، يمكن استخدام المنشئ التقليدي مع شبكة الخادم:
DOCKER_BUILDKIT=0 docker build --network=host …
خدمة لا تستطيع قراءة ملف من وحدة تخزين الأسرار
تُركّب وحدة secrets للقراءة فقط في جميع الخدمات، باستثناء الخدمة التي تولّد محتواها. يمنع ذلك خدمة أخرى من تغيير سر تعتمد عليه بقية المنصة. عند تعذر قراءة ملف متوقع، تحققوا أولاً من اكتمال خدمة التهيئة عند بدء التشغيل، قبل تعديل صلاحيات الخدمة القارئة.
جميع طلبات البوابة تعيد الخطأ 401
تستخدم منصة التحكم والبوابة الرمز نفسه، ويجب أن تتطابق بايتاته تماماً، بما فيها عدم إضافة سطر جديد في نهايته. إذا أُضيف سطر جديد إلى ملف الرمز، فقد تفشل جميع طلبات الاستدعاء البعيد بالمصادقة. لا يميّز سجل البوابة بين رمز غير معروف ورمز أُدخل بخطأ. قارنوا ملفات الرموز دون عرض قيمها أو نسخها إلى السجلات والمحادثات.