Skip to main content

Development Containers

รัน Claude Code ภายใน dev container สำหรับสภาพแวดล้อมที่สอดคล้องและแยกได้ทั่วทีมของคุณ

development container หรือ dev container ช่วยให้คุณกำหนดสภาพแวดล้อมที่เหมือนกันและแยกได้ซึ่งวิศวกรทุกคนในทีมของคุณสามารถรันได้ ด้วย Claude Code ที่ติดตั้งในคอนเทนเนอร์นั้น คำสั่งที่ Claude รันจะดำเนินการภายในคอนเทนเนอร์แทนที่จะเป็นเครื่องโฮสต์ ในขณะที่การแก้ไขไฟล์โปรเจกต์ของคุณปรากฏใน repository ในเครื่องขณะที่คุณทำงาน

warning

แม้ว่า dev container จะให้การป้องกันที่สำคัญ แต่ไม่มีระบบใดที่ปลอดภัยจากการโจมตีทุกประเภทอย่างสมบูรณ์ เมื่อดำเนินการด้วย --dangerously-skip-permissions dev containers ไม่ป้องกันโปรเจกต์ที่เป็นอันตรายจากการขโมยข้อมูลที่เข้าถึงได้ภายในคอนเทนเนอร์ รวมถึง Claude Code credentials ที่เก็บไว้ใน ~/.claude ใช้ dev containers เฉพาะเมื่อพัฒนากับ repository ที่เชื่อถือได้เท่านั้น และติดตามกิจกรรมของ Claude

เพิ่ม Claude Code ลงใน Dev Container ของคุณ​

Claude Code ติดตั้งลงใน dev container ใดๆ ผ่าน Claude Code Dev Container Feature

ขั้นตอนที่ 1: สร้างหรืออัปเดต devcontainer.json​

บันทึกสิ่งต่อไปนี้เป็น .devcontainer/devcontainer.json ใน repository ของคุณ หรือเพิ่มบล็อก features ลงในไฟล์ที่มีอยู่:

.devcontainer/devcontainer.json
{
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"features": {
"ghcr.io/anthropics/devcontainer-features/claude-code:1.0": {}
}
}

แทนที่บรรทัด image ด้วย base image ของโปรเจกต์หรือลบออกหากไฟล์ที่มีอยู่ใช้ Dockerfile

ขั้นตอนที่ 2: Rebuild Container​

เปิด VS Code Command Palette ด้วย Cmd+Shift+P บน Mac หรือ Ctrl+Shift+P บน Windows และ Linux และรัน Dev Containers: Rebuild Container

ขั้นตอนที่ 3: เข้าสู่ระบบ Claude Code​

เปิด terminal ใน container ที่ rebuild แล้วและรัน claude แล้วทำตาม authentication prompt

คงความเป็นตัวตนและการตั้งค่าผ่านการ Rebuild​

ตามค่าเริ่มต้น home directory ของ container จะถูกทิ้งเมื่อ rebuild ดังนั้นวิศวกรต้องเข้าสู่ระบบใหม่ทุกครั้ง Claude Code เก็บ authentication token, user settings และประวัติเซสชันไว้ภายใต้ ~/.claude Mount named volume ที่เส้นทางนั้นเพื่อเก็บ state นี้ผ่านการ rebuild

devcontainer.json
"mounts": [
"source=claude-code-config,target=/home/node/.claude,type=volume"
]

บังคับใช้นโยบายองค์กร​

Dev container เป็นสถานที่ที่สะดวกในการใช้นโยบายองค์กร เพราะ image และการตั้งค่าเดียวกันทำงานบนเครื่องของวิศวกรทุกคน

Claude Code อ่าน /etc/claude-code/managed-settings.json บน Linux และใช้กับลำดับความสำคัญสูงสุดใน settings hierarchy คัดลอกไฟล์จาก Dockerfile ของคุณ:

Dockerfile
RUN mkdir -p /etc/claude-code
COPY managed-settings.json /etc/claude-code/managed-settings.json

เพื่อตั้งค่า environment variables ที่ใช้กับทุกเซสชัน Claude Code ในคอนเทนเนอร์ เพิ่มลงใน containerEnv ใน devcontainer.json ของคุณ:

devcontainer.json
"containerEnv": {
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
"DISABLE_AUTOUPDATER": "1"
}

จำกัด Network Egress​

คุณสามารถจำกัด outbound traffic ของ container ให้เฉพาะโดเมนที่ Claude Code ต้องการ ดู Network access requirements สำหรับโดเมน inference และ authentication

รันโดยไม่มี Permission Prompts​

เนื่องจาก container รัน Claude Code ในฐานะ user ที่ไม่ใช่ root และจำกัดการดำเนินการคำสั่งไว้ในคอนเทนเนอร์ คุณสามารถส่ง --dangerously-skip-permissions สำหรับการทำงานที่ไม่มีการโต้ตอบ CLI ปฏิเสธ flag นี้เมื่อเปิดในฐานะ root ดังนั้นยืนยันว่า remoteUser ตั้งค่าเป็นบัญชีที่ไม่ใช่ root

ลองใช้ Reference Container​

Repository anthropics/claude-code มี dev container ตัวอย่างที่รวม CLI, egress firewall, persistent volumes และ Zsh-based shell

ขั้นตอน​

  1. ติดตั้ง VS Code และ Dev Containers extension
  2. Clone Claude Code repository และเปิดใน VS Code
  3. เมื่อได้รับ prompt คลิก Reopen in Container
  4. เมื่อ container สร้างเสร็จ เปิด terminal ด้วย Ctrl+` และรัน claude เพื่อเข้าสู่ระบบและเริ่มเซสชันแรก

ขั้นตอนต่อไป​

  • Set up Claude Code for your organization: เลือกผู้ให้บริการ authentication ตัดสินใจว่านโยบายจะถึงอุปกรณ์อย่างไร
  • Server-managed settings: ส่งมอบ managed policy จาก Claude.ai admin console
  • Network access requirements: รายการโดเมน allowlist ทั้งหมด
  • Security model: การป้องกัน permission system, sandboxing และ prompt-injection ของ Claude Code