Saltar al contenido
Volver al blog
IADockerDevOps

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.

Ismael Catala2 min de lectura

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.