Deepseek ArtifactsDeepseek Artifacts
دليل dev containers

‏Claude Code داخل dev container: إعداد آمن وقابل للتكرار

ثبّت إضافة Dev Containers، وأبقِ Docker يعمل، وأضف ميزة claude-code الرسمية، واعمل Reopen in Container، وسجّل الدخول من الطرفية، وأبقِ المصادقة حية عبر عمليات إعادة البناء — كل خطوة مدقّقة مقابل وثائق dev container من Anthropic.

TL;DR

  • ثبّت إضافة Dev Containers وأبقِ Docker يعمل ثم اعمل Reopen in Container لأي مستودع فيه .devcontainer/ — يعمل Claude Code وكل أمر ينفّذه داخل الحاوية، لا على جهازك.
  • الميزة الرسمية — "ghcr.io/anthropics/devcontainer-features/claude-code:1.0" في كتلة features — تثبّت الواجهة النصية في أي devcontainer؛ ونال VS Code الإضافة أيضًا، ويتشاركان ~/.claude واحدًا.
  • سجّل الدخول من طرفية الحاوية؛ وإن لم يصل رد الاتصال من المتصفح، ألصق الرمز في المطالبة. واجعل المصادقة تنجو من إعادة البناء بحجم ~/.claude مع containerEnv.CLAUDE_CONFIG_DIR.
  • يستبدل dev container البيئة (أما /sandbox فيحصر الأوامر الفردية على جهازك المضيف). وهما يتكاملان — حاوية للبيئة، وsandbox ومطالبات أذونات للسلوك.

Run Your AI Coding Agent in Dev Containers - Complete Beginner's Guide

القناة: Visual Studio Code15:39

مشاهدة

Step-by-Step: Run Claude Code SAFELY in a Dev Container

القناة: Fuzz Puppy6:56

مشاهدة

Development containers — official documentation

الوثائق الرسمية: code.claude.com/docs

مشاهدة

كل خطوة إعداد وكل اسم ميزة وكل مسار بيانات اعتماد في هذه الصفحة مدقّق مقابل وثائق development containers الرسمية؛ والفيديوهات أعلاه هي المصدر البصري والمعرفي.

تُنسب لقطات الشاشة إلى صانعيها بروابط مباشرة إلى الطوابع الزمنية الدقيقة. لا تُستخدم لقطات للوجوه.

تشغيل Claude Code في dev container خطوة بخطوة

الجزء 1 — المتطلبات: التقاء VS Code بـDocker

  1. 1

    ثبّت إضافة Dev Containers

    افتح لوحة الإضافات في VS Code وثبّت Dev Containers من Microsoft. تضيف هذه الإضافة مؤشر الاتصال البعيد في شريط الحالة وأمر Reopen in Container ومستكشف Remote Explorer — وسيمر كل سير العمل أدناه عبرها. لا حاجة لـDocker بعد.

    VS Code Extensions marketplace page for the Microsoft Dev Containers extension with its Install button and 30 million installs, the extension that opens any repo in a container for Claude Code
    إضافة Dev Containers هي ما يضيف Reopen in Container إلى VS Code — ثبّتها أولًا من لوحة الإضافات.شاهد عند 2:00
  2. 2

    ثبّت Docker Desktop وشغّله

    الـdev containers حاويات حقيقية، لذا يجب أن يعمل محرك حاويات قبل أن يُفتح أي شيء. ‏Docker Desktop هو الخيار المعتاد على macOS وWindows، وDocker Engine يعمل على لينكس. شغّله واتركه عاملًا — المحرك المتوقف هو السبب الأول لتعليق "Opening Remote" في المحاولة الأولى.

    Docker Desktop dashboard with Containers selected in the sidebar and an empty Your running containers show up here list, confirming the Docker engine that dev containers run on is started
    يحتاج Docker Desktop إلى العمل فحسب؛ قائمة حاويات فارغة هي بالضبط مظهر إعداد سليم قبل الحاوية.شاهد عند 2:12
  3. 3

    اعرف ماذا يتغير لـClaude Code

    بعد Reopen in Container يشغّل VS Code خادمه داخل الحاوية — وكذلك كل أمر ينفّذه Claude Code. تبقى التثبيتات وتشغيلات الاختبارات وتعديلات الملفات داخل الحاوية بينما يُركَّب مجلد مساحة العمل راجعًا إلى مستودعك. لا يحتاج جهازك إلا VS Code وDocker؛ وتسكن سلاسل الأدوات والتبعيات في الصورة، ولا يمكن لتجربة عابرة للوكيل لمس أي شيء خارجه.

الجزء 2 — حاوية عاملة من أولها لآخرها

  1. 4

    افتح dev container جاهزًا

    أسرع طريقة لرؤية الآلة تعمل: في Remote Explorer اختر نموذجًا مثل dev container لـGo. يستنسخ VS Code ‏github.com/microsoft/vscode-remote-try-go ويفتحه داخل حجم حاوية — دون أي تكوين كتبته أنت بعد.

    VS Code quick pick titled Select a sample repository to clone in a container volume listing C++, Go, Java, .NET and Node samples from github.com/microsoft
    يأتي Remote Explorer بنماذج جاهزة — اختر واحدًا ويستنسخ VS Code المستودع مباشرة إلى حجم حاوية.شاهد عند 2:30
  2. 5

    دع VS Code يبني ويتصل

    الاتصال الأول يستنسخ المستودع وينزّل صورة الحاوية طبقة طبقة ويشغّل الحاوية — ويعلن شريط الحالة "Connecting to Dev Container". على اتصال بطيء هذه أطول انتظار في الإعداد؛ وكل فتح لاحق يعيد استخدام الصورة ويستغرق ثوانٍ.

    VS Code terminal panel streaming dev container image layer downloads with a Connecting to Dev Container status while the sample repository is cloned
    البناء الأول ينزّل صورة الحاوية طبقة طبقة؛ ويتتبع شريط الحالة الاتصال بـdev container.شاهد عند 2:52
  3. 6

    تأكد أن الطرفية داخل الحاوية

    افتح طرفية جديدة واطبع إصدار سلسلة الأدوات (‏go version هنا). تذكر المخرجات نظام الحاوية ومعمارتها لا حاسوبك المحمول. هذه الطرفية هي بالضبط حيث ستطلق claude — وكل ما ينفّذه يبقى داخل الحاوية.

    Integrated terminal inside the Go dev container with go version go1.22.12 linux/arm64 highlighted, proof the shell where you will run claude executes in the container
    ‏go version يطبع سلسلة أدوات الحاوية لا حاسوبك — شغّل claude في هذه الطرفية وسيبقى داخلها أيضًا.شاهد عند 3:50
  4. 7

    اقرأ ملف devcontainer.json

    يعرّف ملف .devcontainer/devcontainer.json البيئة كلها: الصورة الأساس (أو Dockerfile)، وإضافات VS Code المثبتة في الحاوية، والمنافذ الممرَّرة، وخطوات postCreateCommand، وremoteUser. ولـClaude Code هذا الملف هو أيضًا موضع الميزة الرسمية وحجم بيانات الاعتماد — مغطاة في الخطوتين 9 و13.

    devcontainer.json of the Go sample showing the mcr.microsoft.com/devcontainers/go image plus customizations with VS Code settings and the code-spell-checker extension
    كل ما بُنيت منه الحاوية يسكن .devcontainer/devcontainer.json: الصورة والإضافات والمنافذ الممررة وأوامر ما بعد الإنشاء.شاهد عند 4:40
  5. 8

    وَجِّه الوكيل إلى مساحة العمل

    أرفق @workspace في لوحة الوكيل واطلب شرح المشروع. يُنفَّذ الشرح وكل أمر وراءه داخل الحاوية. ويعمل Claude Code بالطريقة نفسها بمجرد تثبيت واجهته في الصورة: سياق على طريقة @workspace مع أوامر لا تغادر الحاوية أبدًا.

    VS Code agent panel with the @ context picker open listing @workspace as an attachment and Claude Sonnet 4.5 selected as the model before explaining the project inside the dev container
    طلب شرح المشروع من الوكيل عبر @workspace — كل أمر يشغّله ينفَّذ داخل الحاوية.شاهد عند 5:20
  6. 9

    بدّل إلى ميزة Claude Code الرسمية

    بلا تثبيتات يدوية: أضف "ghcr.io/anthropics/devcontainer-features/claude-code:1.0" إلى كتلة features في devcontainer.json وأعد البناء. تثبّت الميزة الواجهة النصية — وإذا فُتحت الحاوية في VS Code فالإضافة أيضًا، وتتشاركان ~/.claude نفسه مع الطرفية. وإن كانت الصورة الأساس بلا Node.js سترى "Failed to install Node.js and npm": أضف ميزة Node فوقها. وإعدادات البيئة مثل CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC أو DISABLE_AUTOUPDATER تذهب تحت containerEnv، ويمكن للـmounts جرّ مستودعاتك المحلية الأخرى إلى الحاوية.

  7. 10

    شغّل التطبيق واستخدم المنفذ الممرَّر

    أطلق التطبيق من داخل الحاوية (لوحة التنقيح أو npm run dev أو go run — ما يقتضيه الـstack) وسيكتشف VS Code المنفذ المستمع: إشعار يعرض فتحه في متصفحك المحلي. لا يغادر الخادم الحاوية أبدًا؛ التمرير يجعل localhost يسلك المعتاد فحسب.

    VS Code notification reporting Your application Hello Remote World running on port 9000 is available with Open in Browser and Preview in Editor buttons after automatic port forwarding
    يعمل التطبيق على المنفذ 9000 داخل الحاوية؛ ويمرّره VS Code ليعمل localhost تمامًا كالمعتاد.شاهد عند 6:08

الجزء 3 — مستودعك وتسجيل الدخول

  1. 11

    أضف dev container إلى مشروعك الخاص

    في أي مستودع، شغّل Dev Containers: Add Dev Container Configuration Files من لوحة الأوامر أو مؤشر الاتصال البعيد واختر "Add configuration to workspace folder". وبإيداعها مع الكود تمنح التكوين زملاءك — وCodespaces — البيئة ذاتها مجانًا.

    Add Dev Container Configuration Files quick pick asking where to create the configuration with Add configuration to workspace folder selected so teammates get it via source control
    لا devcontainer.json بعد؟ يولّد VS Code واحدًا من قالب — أبقه في مساحة العمل ليشاركه git.شاهد عند 9:00
  2. 12

    اختر القالب والميزات

    يقترح VS Code قالبًا يوافق حزمتك (‏Node.js أو Python أو Go…) ثم يعرض قائمة الميزات — مثبّتات قابلة لإعادة الاستخدام مثل Git LFS أو GitHub CLI. وفي القائمة نفسها تنغرز ميزة claude-code من الخطوة 9. اقبل الافتراضات (أو دع الوكيل يصقل الملف المولَّد) ثم أعد الفتح في الحاوية.

    Select Features quick pick listing installable dev container features such as Git Large File Support and GitHub CLI where a Claude Code feature entry gets added
    قائمة الميزات هي موضع انغراز سطر ميزة Claude Code بجوار ما يقترحه القالب.شاهد عند 9:48
  3. 13

    سجّل الدخول داخل الحاوية

    شغّل claude في الطرفية المتكاملة واختر تسجيل دخولك (اشتراك Claude أو Anthropic Console). يفتح المتصفح على جهازك المضيف؛ وإن لم يصل رد الاتصال إلى الحاوية فانسخ الرمز من المتصفح وألصقه في مطالبة "Paste code here if prompted". ولتنجو المصادقة من إعادة البناء، ركّب حجمًا على ~/.claude واضبط containerEnv.CLAUDE_CONFIG_DIR على المسار نفسه — ملف الحساب ~/.claude.json يسكن خارج ذلك المجلد ولهذا يهمّ النصفان. وللتشغيلات بلا واجهة أو Codespaces، ولّد رمزًا بـclaude setup-token ومرّر ANTHROPIC_API_KEY أو CLAUDE_CODE_OAUTH_TOKEN.

‏Dev container مقابل /sandbox: أي عزل تحتاج؟

يقدم Claude Code جوابَي عزل يحلّان مشكلتين مختلفتين. يستبدل dev container البيئة التي يعمل فيها الوكيل؛ أما العزل المدمج فيحصر الأوامر التي يشغّلها على جهازك الحالي. وترسمهما الوثائق الرسمية متكاملين — حتى أن dev container المرجعي يضم سكربت تقييد للاتصالات الصادرة.

  • 1النطاق. يستبدل dev container البيئة كلها — نظام التشغيل وسلسلة الأدوات والتبعيات — بتلك المعرَّفة في devcontainer.json. أما الـsandboxing فيُبقي جهازك ويقيّد ما يستطيع كل أمر bash قراءته وكتابته والوصول إليه على الشبكة.
  • 2المتطلبات. تحتاج الـdev containers إلى Docker (‏Desktop أو Engine) مع إضافة Dev Containers؛ والـsandboxing مدمج في Claude Code ولا يحتاج أيًّا منهما.
  • 3ميكانيكا الفريق. ‏devcontainer.json يُودَع مع الكود فيبني كل زميل وكل Codespace البيئة ذاتها؛ أما سياسة الـsandbox فتسكن إعدادات Claude Code وتتبع المستخدم لا المستودع.
  • 4نطاق الضرر. داخل حاوية يصيب rm -rf سيئ أو تثبيتًا خبيثًا نظام ملفات قابلًا للرمي ويبقى جهازك سليمًا. ويستهدف الـsandbox النتيجة نفسها لكل أمر — دون حد حاوية.
  • 5اختر dev container حين يحتاج المشروع نفسه بيئة: بيئات تشغيل متعددة، وإعداد نظيف للمبتدئين، وتطوير سحابي. واختر الـsandbox حاجز الحماية اليومي لجلسات جهازك المضيف. وهوما يتكاملان — شغّل Claude Code داخل dev container وأبقِ الـsandboxing ومطالبات الأذونات مفعّلة.

سطر آخر يفرّق بينهما: ‏/sandbox سياسة لكل جلسة تضبطها وسط المحادثة، بينما يُقرَّر dev container قبل بدء الجلسة — وتغييره يعني إعادة بناء. وتتكل التشغيلات الدفعية غير المراقَبة على الاثنين معًا: مستخدم حاوية غير root، وصادر محدود، و--dangerously-skip-permissions داخل الحاوية فقط.

شيء لا يسلك المسلك؟ ابدأ من هنا

معظم احتكاكات dev container مع Claude Code تقع في حفنة أنماط معروفة. وكل إصلاح أدناه مقتبس حرفيًا من وثائق development containers الرسمية.

  • 1"Failed to install Node.js and npm" أثناء تثبيت الميزة: الصورة الأساس بلا Node.js. أضف ميزة Node ‏(ghcr.io/devcontainers/features/node:1) فوق ميزة claude-code في كتلة features وأعد البناء.
  • 2يكتمل تسجيل الدخول في المتصفح لكن الحاوية تبقى خارجه: رد اتصال OAuth لا يبلغ الحاوية. انسخ الرمز الظاهر في المتصفح وألصقه في مطالبة "Paste code here if prompted" في الطرفية.
  • 3يتلاشى الدخول والإعدادات بعد كل إعادة بناء: لا شيء يحفظ ~/.claude. ركّب حجمًا مسمّى على ذلك المسار واضبط containerEnv.CLAUDE_CONFIG_DIR عليه — وأدرج متغير devcontainerId في اسم الحجم لتبقى المشاريع معزولة. وعلى Codespaces ينجو المجلد من الإيقاف/التشغيل لكنه يُمسح في إعادة بناء كاملة، فزوّد ANTHROPIC_API_KEY أو CLAUDE_CODE_OAUTH_TOKEN من claude setup-token كسِرّ بدلًا من ذلك.
  • 4مفاجآت إصدار Claude Code: يثبّت وسم الميزة claude-code:1.0 إصدار سكربت التثبيت لا الواجهة النصية — تُثبَّت أحدث إصدارة وتحدّث نفسها تلقائيًا داخل الحاوية. ولتجميد إصدار، ثبّته في Dockerfile بـnpm install -g @anthropic-ai/claude-code@X.Y.Z.
  • 5"Is Docker running?" أو "Opening remote" معلّق: المحرك غير قابل للوصول — شغّل Docker Desktop (أو الخادم الخفي) وأعد المحاولة. وإن رفض --dangerously-skip-permissions الإقلاع فالحاوية تعمل بـroot؛ اضبط remoteUser على مستخدم غير root مثل "vscode". ويمكن للمؤسسات تعطيل وضع التجاوز كليًا عبر managed-settings.json في /etc/claude-code.

إعادة البناء هي إعادة المحاولة الشاملة: لوحة الأوامر ← "Dev Containers: Rebuild Container" تعيد قراءة devcontainer.json وتعيد تشغيل الميزات بعد أي تعديل. وإن صارت إعادة البناء تتصرف خلاف النسخ الجديد فاحذف الحاوية وأعد الفتح — الصور والأحجام المسمّاة تنجو من الحذف.

أسئلة dev containers الشائعة

أدلة Claude Code ذات الصلة