OpenCode en Docker sirve para tener un runtime reproducible, un límite claro de archivos o una ruta de modelo local. El contenedor no es automáticamente seguro: la seguridad depende de la imagen, los montajes, las credenciales, la red, los permisos y la evidencia reunida antes de escribir.
Conclusión rápida: elige la ruta de Docker
Docker Sandbox encaja cuando quieres un espacio aislado con una ruta guiada. Aun así, debes saber qué archivos se montan, qué proveedor recibe el código y qué permisos concede el sandbox.
Docker Model Runner es otra capa: ofrece el servicio de modelo y OpenCode sigue siendo la interfaz de programación. Que el modelo responda no configura el directorio ni los permisos.
Una imagen propia permite fijar Node, paquetes o certificados, pero también exige mantener el Dockerfile, el usuario, las actualizaciones y las credenciales.
Rutas de configuración y compromisos
`opencode docker image`, `opencode docker compose` y `docker opencode` son variantes de una misma decisión, no páginas independientes. Usa una tabla para compararlas.
Empieza con la imagen mínima que ejecute el CLI y alcance el proveedor; no añadas servicios ni montes todo el directorio personal antes de probar.
Si buscas privacidad del modelo, separa el servicio de inferencia del agente. El endpoint no sustituye la revisión del montaje.
| Ruta | Buen uso | Límite principal |
|---|---|---|
| Docker Sandbox | Espacio aislado rápido | Autenticación, montaje y permisos |
| Docker Model Runner | Inferencia local o privada | Modelo, endpoint, puerto y contexto |
| Imagen propia | Herramientas fijadas y equipo | Dockerfile, usuario, actualizaciones y secretos |
| Docker Compose | Varios servicios | Nombres, red, volúmenes y limpieza |
Antes de ejecutar OpenCode en un contenedor
Revisa la procedencia de la imagen antes de montar código. Prefiere documentación oficial o un Dockerfile, base y actualización que se puedan inspeccionar.
Monta solo el proyecto y evita home, claves SSH, credenciales cloud y el socket Docker del host.
Inyecta las credenciales al ejecutar, nunca en Dockerfile, capas, Compose versionado o historial del shell; revisa `.dockerignore`.
Haz la primera prueba en un repositorio pequeño con lectura, un cambio seguro, diff de Git y un test sin efectos de producción.
7 comprobaciones para una configuración fiable
Las comprobaciones convierten el arranque en evidencia: modelo ausente apunta al endpoint, archivos erróneos al montaje y escritura excesiva a permisos.
Usa el mismo orden en portátil y CI y registra imagen, proveedor, ruta y comando.
Una respuesta correcta no demuestra seguridad; la imagen puede ser mutable y el volumen demasiado amplio.
- Inspecciona la imagen Anota nombre, tag o digest, base, actualización y usuario.
- Crea un workspace estrecho Monta solo el proyecto y usa rama o worktree separado.
- Conecta un proveedor Valida un endpoint y deja la clave fuera de imagen y repositorio.
- Confirma el modelo Comprueba respuesta, ID, contexto y puerto dentro del contenedor.
- Haz una tarea de lectura Pide un resumen antes de permitir cambios.
- Revisa un diff pequeño Cambia documentación o fixture y rechaza archivos ajenos.
- Registra la limpieza Detén el contenedor, elimina volúmenes temporales y anota el arreglo.
Docker Model Runner y endpoints compatibles con OpenAI
Docker Model Runner es útil para inferencia local o privada. Activa un modelo, comprueba el servicio desde la misma red y usa URL e ID exactos.
Prueba por separado el endpoint y OpenCode: la segunda prueba confirma contexto, permisos y sesión.
Limita la interfaz y los puertos y documenta si usas gateway del host, nombre Compose o servidor remoto.
# Illustrative shape only; confirm current image, endpoint, and model fields in official docs
docker run --rm -it --mount type=bind,src="$PWD",dst=/workspace --workdir /workspace -e OPENAI_API_KEY -e OPENAI_BASE_URL opencode-image:reviewed opencodePermisos, secretos, puertos y Git
El límite del contenedor es solo una parte del modelo de permisos. OpenCode, Docker, el usuario Linux, el proveedor y Git deben coincidir.
Documenta el comando mínimo, la limpieza, los volúmenes permitidos, los puertos privados y cómo reproducir la imagen.
El primer cambio debe ser pequeño. Detente si aparecen secretos, bundles o archivos fuera del proyecto.
| Revisión | Predeterminado más seguro | Señal de riesgo |
|---|---|---|
| Secretos | Inyectar al ejecutar y rotar | Clave en Dockerfile, capas o Compose |
| Archivos | Un proyecto, usuario no root y worktree | Home, SSH o socket Docker montados |
| Red | Solo endpoint y puertos necesarios | Todos los puertos o endpoint público |
| Git | Revisar status y diff | Escrituras fuera del worktree |
| Imagen | Digest o tag revisado | `latest` sin responsable |
Diagnóstico: separa la capa que falla
Si falta `opencode`, comprueba imagen, PATH, entrypoint y usuario antes de cambiar el proveedor.
Si no aparece el modelo, prueba el endpoint dentro del contenedor y revisa URL, DNS, puerto, credenciales e ID; `localhost` puede apuntar al contenedor.
Si la respuesta es buena pero la edición no, reduce el montaje y el alcance, revisa permisos y repite una tarea de lectura.
| Síntoma | Capa probable | Primera comprobación |
|---|---|---|
| No aparece el comando | Imagen o PATH | Ejecuta la versión en la misma imagen y carpeta |
| Proveedor sin modelo | Endpoint o ID | Prueba desde el contenedor y compara el ID |
| Faltan archivos | Montaje o carpeta | Muestra workdir y proyecto montado |
| Timeout | Red, puerto, cuota o modelo | Prueba corta y revisa la red |
| Cambios inesperados | Montaje o permisos | Detén, revisa Git y reduce el montaje |
Preguntas frecuentes sobre OpenCode en Docker
¿Puede OpenCode ejecutarse en Docker?
Sí. Revisa imagen, montaje, credenciales, red y permisos.
¿Docker Sandbox o imagen propia?
Sandbox para aislamiento gestionado; imagen propia para dependencias fijadas si puedes mantenerla.
¿Cómo conecto Docker Model Runner?
Valida el servicio y usa la URL compatible con OpenAI y el ID exacto desde la misma red.
¿Qué debo montar?
Solo el proyecto o worktree; evita home, claves SSH, credenciales y socket Docker.
¿Necesito Compose?
No. Un contenedor es más fácil de verificar; Compose sirve para varios servicios.
¿Por qué no aparece el modelo?
Revisa base URL, localhost, ID, puerto, clave y nombre de servicio.
Fuentes oficiales para verificar
Los detalles de integración cambian. Confirma imágenes, autenticación, endpoints y permisos en la documentación oficial antes de usar comandos en un repositorio sensible.