תיעוד 71
קונטיינרי פיתוח
הרץ את Claude Code בתוך dev container עבור סביבות עקביות ומבודדות בכל הצוות שלך.
קונטיינר פיתוח, או dev container, מאפשר לך להגדיר סביבה זהה ומבודדת שכל מהנדס בצוות שלך יכול להריץ. כאשר Claude Code מותקן בקונטיינר זה, פקודות ש-Claude מריץ מתבצעות בתוכו ולא במכונה המארחת, בעוד שעריכות לקובצי הפרויקט שלך מופיעות במאגר המקומי שלך בזמן העבודה.
דף זה מכסה את התקנת Claude Code ב-dev container, ולאחר מכן סדרה של נושאי הגדרה עצמאיים: שימור אימות בין בנייה מחדש לבנייה מחדש, אכיפת מדיניות ארגונית, הגבלת תעבורת רשת יוצאת, והרצה ללא בקשות הרשאה. קרא את אלה שמתאימים להגדרה שלך.
אזהרה: בעוד ש-dev container מספק הגנות משמעותיות, שום מערכת אינה חסינה לחלוטין מכל המתקפות. כאשר הוא מורץ עם
--dangerously-skip-permissions, קונטיינרי פיתוח אינם מונעים מפרויקט זדוני להוציא החוצה כל דבר שנגיש בתוך הקונטיינר, כולל אישורי הגישה של Claude Code המאוחסנים ב-~/.claude. השתמש ב-dev containers רק בעת פיתוח עם מאגרים מהימנים, ועקוב אחר הפעילויות של Claude. הימנע מעיגון סודות מהמארח כגון~/.sshאו קובצי אישורי ענן לתוך הקונטיינר, והעדף אסימונים בעלי תוקף קצר או כאלה המוגבלים למאגר בלבד.
#כיצד dev containers עובדים עם עורך הקוד שלך
dev container רץ כקונטיינר Docker, במכונה שלך או במארח ענן כגון GitHub Codespaces. עורך שתומך במפרט Dev Containers, כגון VS Code, GitHub Codespaces, סביבת פיתוח של JetBrains, או Cursor, מתחבר לקונטיינר הזה: אתה מעיין ועורך קבצים בעורך כרגיל, אך הטרמינל המשולב, שרתי השפה (language servers) וכלי הבנייה רצים כולם בתוך הקונטיינר ולא במכונה המארחת שלך. עורכים ללא תמיכה ב-dev container, כגון Vim רגיל, אינם חלק מתהליך עבודה זה.
Claude Code רץ בתוך הקונטיינר, כך שהוא רואה את אותם קבצים, תלויות וכלים כמו שאר שרשרת הכלים של הפרויקט שלך. ב-VS Code באפשרותך להשתמש בפאנל ההרחבה של Claude Code או להריץ claude בטרמינל המשולב, שניהם רצים בתוך הקונטיינר ומשתפים את אותה הגדרת ~/.claude.
#הוספת Claude Code ל-dev container שלך
Claude Code מותקן בכל dev container דרך ה-Claude Code Dev Container Feature.
ההגדרות פועלות עם כל כלי התומך במפרט Dev Containers, כגון VS Code, GitHub Codespaces או סביבות פיתוח של JetBrains. השלבים להלן משתמשים ב-VS Code כדוגמה.
כאשר אתה פותח את הקונטיינר ב-VS Code או ב-Codespaces, ה-feature מוסיף גם את ההרחבה של Claude Code עבור VS Code, עורכים אחרים מתעלמים מחלק זה.
טיפ: חדש ב-dev containers? מדריך VS Code Dev Containers מלווה את שלבי ההתקנה של Docker, ההרחבה ופתיחת הקונטיינר הראשון שלך. לדוגמה מוקשחת ומלאה יותר הכוללת חומת אש ונפחים קבועים, ראה נסה את קונטיינר הייחוס.
צור או עדכן את devcontainer.json
שמור את התוכן הבא בתור
.devcontainer/devcontainer.jsonבמאגר שלך, או הוסף את בלוק ה-featuresלקובץ הקיים שלך.תג הגרסה בסוף, כגון
:1.0, מקבע את סקריפט ההתקנה של ה-feature, ולא את גרסת השחרור של Claude Code. ה-feature מתקין את הגרסה העדכנית ביותר של Claude Code, וברירת המחדל של Claude Code היא להתעדכן אוטומטית בתוך הקונטיינר.כדי לקבע את גרסת ה-CLI או להשבית את העדכון האוטומטי, ראה אכיפת מדיניות ארגונית.
{ "image": "mcr.microsoft.com/devcontainers/base:ubuntu", "features": { "ghcr.io/anthropics/devcontainer-features/claude-code:1.0": {} } }החלף את שורת ה-
imageבתמונת הבסיס של הפרויקט שלך, או הסר אותה אם הקובץ הקיים שלך משתמש ב-Dockerfile.ה-feature של Claude Code מתקין את Node.js בעצמו כאשר תמונת הבסיס אינה מספקת אותו. אם התקנה זו נכשלת ותהליך הבנייה נעצר עם
Failed to install Node.js and npm, הוסף את"ghcr.io/devcontainers/features/node:1": {}לבלוק ה-featuresמעל ה-feature של Claude Code ובנה מחדש.בנה מחדש את הקונטיינר
פתח את ה-Command Palette ב-VS Code באמצעות
Cmd+Shift+Pב-Mac אוCtrl+Shift+Pב-Windows וב-Linux, והרץ את Dev Containers: Rebuild Container.עבור כלים אחרים, פעל לפי פעולת הבנייה מחדש של אותו כלי: ראה בנייה מחדש ב-GitHub Codespaces, את Dev Containers CLI, או את תיעוד ה-dev container של סביבת הפיתוח שלך.
התחבר אל Claude Code
פתח טרמינל בקונטיינר שנבנה מחדש והרץ
claude, ולאחר מכן פעל לפי הנחיית האימות.
מה שאתה רואה בהנחיית האימות תלוי בספק שלך:
- Anthropic: התחבר דרך דפדפן באמצעות חשבון Claude או Anthropic Console שלך
- Amazon Bedrock, Google Cloud's Agent Platform, או Microsoft Foundry: Claude Code משתמש באישורי ספק הענן שלך, ללא בקשה בדפדפן
עבור ספקי ענן, העבר אישורים לתוך הקונטיינר כמשתני סביבה דרך containerEnv, סוד של Codespaces, או זהות עומס העבודה (workload identity) של הענן שלך, במקום לעגן קובצי אישורים מהמכונה המארחת. ראה Amazon Bedrock, Google Cloud's Agent Platform, או Microsoft Foundry עבור שרשרת האישורים ש-Claude Code קורא.
ראה בחירת ספק ה-API שלך כדי להחליט איזה נתיב מתאים לארגון שלך.
הערה: אם ההתחברות בדפדפן הושלמה אך הודעת החזרה (callback) אינה מגיעה לקונטיינר, העתק את הקוד המוצג בדפדפן והדבק אותו בהנחיה
Paste code here if promptedבטרמינל. מצב זה יכול להתרחש כאשר העברת הפורטים (port forwarding) של העורך אינה מנתבת את ה-callback של localhost.
#שימור אימות והגדרות בין בנייה מחדש לבנייה מחדש
כברירת מחדל, ספריית הבית של הקונטיינר נמחקת בעת בנייה מחדש, כך שמהנדסים חייבים להתחבר שוב בכל פעם. Claude Code שומר את אסימון האימות שלו, הגדרות המשתמש והיסטוריית ההפעלות תחת ספריית ~/.claude. הוא שומר את חשבון ה-OAuth שלך, שרתי MCP אישיים ואמון לפי פרויקט ב-~/.claude.json, קובץ נפרד מחוץ לספרייה זו, כך שעיגון נפח ב-~/.claude לבדו אינו שומר אותך מחובר. עגן נפח בעל שם (named volume) ב-~/.claude והגדר את CLAUDE_CONFIG_DIR לאותו נתיב, כדי ש-Claude Code יכתוב את .claude.json בתוך הנפח.
הדוגמה הבאה מעגנת את הנפח ומגדירה את CLAUDE_CONFIG_DIR עבור קונטיינר שבו ה-remoteUser הוא node:
"mounts": [
"source=claude-code-config,target=/home/node/.claude,type=volume"
],
"containerEnv": {
"CLAUDE_CONFIG_DIR": "/home/node/.claude"
}החלף את /home/node בספריית הבית של ה-remoteUser בקונטיינר שלך. אם כבר הגדרת את containerEnv, לדוגמה באכיפת מדיניות ארגונית, הוסף את CLAUDE_CONFIG_DIR לאותו אובייקט במקום להוסיף אובייקט שני.
כדי לבודד את המצב לפי פרויקט במקום לשתף נפח יחיד בין כל המאגרים, כלול את המשתנה ${devcontainerId} בשם המקור. תצורת הייחוס משתמשת ב-source=claude-code-config-${devcontainerId} למטרה זו.
ב-GitHub Codespaces, ספריית ~/.claude נשמרת כאשר אתה עוצר ומפעיל codespace, אך מתנקה בעת בנייה מחדש של הקונטיינר, ולכן ההגדרה שלעיל חלה גם שם.
כדי להעביר אימות בין codespaces שונים, אחסן את ANTHROPIC_API_KEY או CLAUDE_CODE_OAUTH_TOKEN מתוך claude setup-token בתור Codespaces secret. Codespaces חושף סודות כמשתני סביבה בתוך הקונטיינר באופן אוטומטי.
#אכיפת מדיניות ארגונית
dev container הוא מקום נוח להחלת מדיניות ארגונית, מכיוון שאותה תמונה ואותה הגדרה רצות במכונה של כל מהנדס.
Claude Code קורא את /etc/claude-code/managed-settings.json ב-Linux ומחיל אותו בעדיפות הגבוהה ביותר בהיררכיית ההגדרות, כך שערכים שם דורסים כל מה שמהנדס מגדיר ב-~/.claude או בספריית .claude/ של הפרויקט. העתק את הקובץ למקומו מתוך ה-Dockerfile שלך:
RUN mkdir -p /etc/claude-code
COPY managed-settings.json /etc/claude-code/managed-settings.jsonמכיוון שה-Dockerfile נמצא במאגר, כל מי שיש לו הרשאת כתיבה יכול לשנות או להסיר שלב זה. עבור מדיניות שמהנדסים אינם יכולים לעקוף על ידי עריכת קובצי מאגר, ספק הגדרות מנוהלות דרך הגדרות מנוהלות שרת או דרך ה-MDM שלך במקום זאת. ראה קובצי הגדרות מנוהלות עבור המפתחות הזמינים ונתיבי ההעברה האחרים.
כדי להגדיר משתני סביבה שיחולו על כל הפעלת Claude Code בקונטיינר, הוסף אותם ל-containerEnv ב-devcontainer.json שלך. הדוגמה הבאה מבטלת את ההשתתפות בטלמטריה ובדיווח שגיאות ומונעת מ-Claude Code להתעדכן אוטומטית לאחר ההתקנה:
"containerEnv": {
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
"DISABLE_AUTOUPDATER": "1"
}CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC משבית גם את בדיקת ה-feature flags שבהם תלויים שלט רחוק (Remote Control) ומאפיינים אחרים הזקוקים לאחזור feature flags, כך שהפעלות בקונטיינר אינן יכולות להשתמש בהם.
ה-Dev Container Feature מתקין תמיד את גרסת השחרור העדכנית ביותר של Claude Code. כדי לקבע גרסה ספציפית של Claude Code עבור בנייה הניתנת לשחזור, התקן אותה מה-Dockerfile שלך עם npm install -g @anthropic-ai/[email protected] במקום להשתמש ב-feature, והגדר את DISABLE_AUTOUPDATER כפי שמוצג לעיל.
לרשימה המלאה של בקרות מדיניות כולל כללי הרשאות, הגבלות כלים ורשימות מורשים של שרתי MCP, ראה הגדרת Claude Code עבור הארגון שלך.
כדי להפוך שרתי MCP לזמינים בתוך הקונטיינר, הגדר אותם בהיקף פרויקט בקובץ .mcp.json בשורש המאגר, כך שהם יישמרו במאגר לצד הגדרות ה-dev container שלך. התקן ב-Dockerfile שלך קבצים בינאריים ששרתי stdio מקומיים תלויים בהם, והוסף דומיינים של שרתים מרוחקים לרשימת המורשים של הרשת שלך.
#הגבלת תעבורת רשת יוצאת
באפשרותך להגביל את תעבורת הרשת היוצאת של הקונטיינר רק לדומיינים ש-Claude Code זקוק להם. ראה דרישות גישה לרשת עבור דומיינים של היקש (inference) ואימות, וכן שירותי טלמטריה עבור חיבורי טלמטריה ודיווח שגיאות אופציונליים וכיצד להשבית אותם.
קונטיינר הייחוס כולל סקריפט init-firewall.sh שמגביל תעבורה יוצאת ליעדים שהסקריפט מאשר. הרצת חומת אש בתוך קונטיינר דורשת הרשאות נוספות, ולכן תצורת הייחוס מוסיפה את היכולות NET_ADMIN ו-NET_RAW דרך runArgs. סקריפט חומת האש והיכולות הללו אינם נדרשים עבור Claude Code עצמו: באפשרותך להשמיט אותם ולהסתמך על בקרות הרשת שלך במקום זאת.
#הרצה ללא בקשות הרשאה
מכיוון שהקונטיינר מריץ את Claude Code כמשתמש שאינו root ותוחם את ביצוע הפקודות לקונטיינר, באפשרותך להעביר את --dangerously-skip-permissions עבור פעולה ללא השגחה. ה-CLI דוחה דגל זה כאשר הוא מופעל כ-root, לכן ודא ש-remoteUser מוגדר לחשבון שאינו root.
דילוג על בקשות הרשאה שולל ממך את ההזדמנות לבדוק קריאות לכלים לפני ביצוען. Claude עדיין יכול לשנות כל קובץ בסביבת העבודה המעוגנת ב-bind-mount, אשר מופיע ישירות במכונה המארחת שלך, ולהגיע לכל מה שמדיניות הרשת של הקונטיינר מאפשרת. שלב דגל זה עם הגבלות תעבורת הרשת היוצאת שלעיל כדי להגביל את מה שהפעלה ללא הרשאות יכולה להגיע אליו.
אם ברצונך לקבל פחות בקשות הרשאה מבלי להשבית בדיקות בטיחות, שקול להשתמש ב-auto mode במקום זאת, שבו מסווג (classifier) בודק פעולות לפני ביצוען. כדי למנוע ממהנדסים להשתמש ב---dangerously-skip-permissions לחלוטין, הגדר את permissions.disableBypassPermissionsMode ל-"disable" בהגדרות מנוהלות.
#נסה את קונטיינר הייחוס
מאגר anthropics/claude-code כולל dev container לדוגמה המשלב את ה-CLI, חומת אש לתעבורה יוצאת, נפחים קבועים, ומעטפת (shell) מבוססת Zsh. הוא מסופק כדוגמה עובדת ולא כתמונת בסיס מתוחזקת: השתמש בו כדי לראות כיצד החלקים משתלבים יחד לפני החלתם על ההגדרה שלך.
התקן דרישות מוקדמות
התקן את VS Code ואת ההרחבה Dev Containers.
שכפל את מאגר הייחוס
שכפל את מאגר Claude Code ופתח אותו ב-VS Code.
פתח מחדש בקונטיינר
כאשר תוצג הנחיה, לחץ על Reopen in Container, או הרץ Dev Containers: Reopen in Container מתוך ה-Command Palette.
הפעל את Claude Code
ברגע שהקונטיינר יסיים להיבנות, פתח טרמינל באמצעות
Ctrl+`והרץclaudeכדי להתחבר ולהתחיל את ההפעלה הראשונה שלך.
כדי להשתמש בהגדרה זו עם פרויקט משלך, העתק את ספריית .devcontainer/ לתוך המאגר שלך והתאם את ה-Dockerfile עבור שרשרת הכלים שלך, או חזור אל הוספת Claude Code ל-dev container שלך כדי להוסיף רק את ה-feature להגדרה שכבר יש לך.
תצורת הייחוס מורכבת משלושה קבצים. אף אחד מהם אינו נדרש כאשר אתה מוסיף את Claude Code ל-dev container משלך דרך ה-feature, אך הם מציגים דרך אחת לשלב את החלקים.
| קובץ | מטרה |
|---|---|
devcontainer.json | עיגוני נפח, יכולות runArgs, הרחבות VS Code ו-containerEnv |
Dockerfile | תמונת בסיס, כלי פיתוח והתקנת Claude Code |
init-firewall.sh | מגביל תעבורת רשת יוצאת ליעדים שהסקריפט מאשר |
#הצעדים הבאים
ברגע ש-Claude Code פועל ב-dev container שלך, הדפים להלן מכסים את שאר השלבים של פריסה ארגונית: בחירת נתיב אימות, אספקת מדיניות מנוהלת מחוץ למאגר, ניטור שימוש, והבנת מה Claude Code מאחסן ושולח.
- הגדרת Claude Code עבור הארגון שלך: בחר ספק אימות, החלט כיצד מדיניות מגיעה למכשירים, ותכנן את הפריסה
- הגדרות מנוהלות שרת: ספק מדיניות מנוהלת מתוך מסוף הניהול של Claude.ai כך שמהנדסים לא יוכלו לעקוף אותה על ידי עריכת קובצי מאגר
- ניטור שימוש וביקורת פעילות: יצא מדדי OpenTelemetry ובדוק מה הצוות שלך מריץ
- דרישות גישה לרשת: רשימת המורשים המלאה של דומיינים עבור שרתי פרוקסי וחומות אש
- שירותי טלמטריה וביטול הצטרפות: מה ש-Claude Code שולח כברירת מחדל ומשתני הסביבה שמשביתים זאת
- סיור בספריית
.claude: מה עיגון הנפח מכיל, כולל אישורים, הגדרות והיסטוריית הפעלות - סביבות ארגז חול: השווה בין dev containers לבין ארגז החול המובנה של Bash, קונטיינרים מותאמים אישית ומכונות וירטואליות
- מודל אבטחה: כיצד מערכת ההרשאות של Claude Code, ארגז החול וההגנות מפני prompt injection משתלבים יחד
- מצבי הרשאה: הטווח המלא מ-plan mode ל-auto mode ועד bypass, ומתי להשתמש בכל אחד