المطورون
لا تستطيع حاوية الوصول إلى localhost على Mac
لكل حاوية مكدس شبكة خاص بها. داخل الحاوية، يشير localhost إلى الحاوية نفسها، وليس Mac.
الأعراض
- يتلقى تطبيق في حاوية رسالة «connection refused» على
localhost:5432أو منفذ مماثل. - يعمل عنوان URL نفسه في Safari أو Terminal على Mac.
- يتعذر الوصول إلى خادم نموذج أو API على Mac من حاوية تطوير.
الأسباب المحتملة
- يشير localhost إلى الحاوية. تبحث الحاوية عن الخدمة في مكدس الشبكة الخاص بها، حيث لا يستمع أي شيء.
- يتغير عنوان المضيف. تقول وثائق Docker إن عنوان IP للمضيف يتغير، وتوفر اسمًا خاصًا للمضيف بدلًا منه.
- جدار حماية على Mac. قد يحظر جدار حماية macOS أو تطبيق جدار حماية آخر الاتصالات الواردة إلى الخدمة.
كيفية التحقق
تأكد من أن الخدمة تعمل على Mac. استبدل 8000 بمنفذك.
curl http://localhost:8000اعرف العنوان الذي تستمع عليه خدمة Mac.
lsof -nP -iTCP:8000 -sTCP:LISTENالمخرجات تعني
*:8000جميع العناوين. وتعني127.0.0.1:8000عنوان الاسترجاع فقط.اختبر اسم المضيف من داخل الحاوية، إذا كانت الصورة تتضمن wget.
docker exec my-container wget -qO- http://host.docker.internal:8000
كيفية الإصلاح
في الحاوية، استخدم
host.docker.internalبدلًا منlocalhost. يدعم Docker Desktop وOrbStack هذا الاسم.اضبط العنوان في إعدادات التطبيق، مثلًا في متغير بيئة.
docker run -e API_URL=http://host.docker.internal:8000 my-imageمع OrbStack، يمكنك استخدام شبكة المضيف بدلًا من ذلك. عندئذ تكون خدمات Mac على
localhostفي الحاوية.docker run --net host my-imageإذا استمر فشل الاتصال، فتحقق من إعدادات جدار حماية macOS. انظر جدار حماية macOS يحظر الاتصالات الواردة.
باستخدام Kilobat
تعمل فحوص Kilobat على Mac، وليس داخل الحاوية. أضف
--context containerللحصول على أمر تشغّله في الحاوية.kilobat why http://localhost:8000 --context containerإذا كانت خدمة مستضافة تتصل بـ Mac، فاستخدم
--context provider. عندئذ يوضح Kilobat أن localhost خاص وخارج نطاق وصوله.kilobat why http://localhost:8000 --context provider
الأسئلة
هل يعمل host.docker.internal على Linux أيضًا؟
تغطي هذه الصفحة Mac. في Docker Desktop لـ Mac وOrbStack، يُحل الاسم إلى المضيف.
لماذا يصل Safari إلى الخدمة بينما لا تستطيع الحاوية ذلك؟
يعمل Safari على Mac، لذا يشير localhost إلى Mac. للحاوية localhost خاص بها.
المصادر
- وثائق Docker: استكشاف إرشادات الشبكات على Docker Desktop
- وثائق OrbStack: شبكات الحاويات
- وثائق OrbStack: شبكة المضيف
- lsof(8)، صفحة دليل مثبّتة مع macOS 27.2
تم التحقق في 29 أكتوبر 2026.