Encierra a Claude Code en Docker
Dar acceso a tu terminal a un agente de IA da vértigo. Un contenedor bien configurado te deja disfrutar de la velocidad sin apostarte el equipo.
La primera vez que un agente de código ejecutó rm en mi máquina se me quedó un
cuerpo raro. No borró nada importante, pero la pregunta ya estaba hecha: ¿por
qué le estoy dando acceso a todo mi disco?
La respuesta corta es que no hace falta. Un contenedor resuelve el 90% del problema en veinte líneas.
El Dockerfile
FROM node:22-slim
RUN apt-get update && apt-get install -y --no-install-recommends \
git ca-certificates ripgrep \
&& rm -rf /var/lib/apt/lists/*
# Un usuario sin privilegios: nada de trabajar como root
RUN useradd -m -s /bin/bash agent
USER agent
WORKDIR /workspace
CMD ["bash"]Lo importante no es la imagen, es lo que no montas.
Montar solo el proyecto
services:
agent:
build: .
volumes:
- ./:/workspace
- agent-cache:/home/agent/.cache
working_dir: /workspace
environment:
- ANTHROPIC_API_KEY
tmpfs:
- /tmp
volumes:
agent-cache:Con esto el agente ve el repositorio y nada más. Ni tus claves SSH, ni tu
~/.aws, ni el resto de proyectos del disco. Si se equivoca, se equivoca dentro
de una carpeta que ya está versionada en git.
Los detalles que marcan la diferencia
Pasa la API key por entorno, nunca por fichero montado. Fíjate en que la variable se declara sin valor: Docker Compose la toma del entorno del host y no queda escrita en ningún sitio.
Añade ripgrep a la imagen. Los agentes buscan en el código constantemente y
la diferencia de velocidad frente a grep recursivo es enorme en repos grandes.
Usa tmpfs para /tmp. Los ficheros temporales viven en memoria y
desaparecen al parar el contenedor.
Limita la red si tu caso lo permite. Si el agente solo tiene que tocar código
local, network_mode: none es la jaula perfecta. Ten en cuenta que entonces no
podrá instalar dependencias ni llamar a la API, así que suele ser más práctico
dejarlo con red y confiar en el aislamiento del sistema de ficheros.
Lo que no resuelve
Un contenedor no impide que el agente haga git push --force a producción si
le has dado credenciales. El aislamiento del sistema de ficheros es una capa, no
un sustituto de los permisos. Revisa qué tokens hay en el entorno antes de
arrancar.
Con esto llevo meses trabajando mucho más tranquilo. La velocidad es la misma y el vértigo ha desaparecido.