OpenCode mit Docker liefert eine reproduzierbare Laufzeit, eine klare Dateigrenze oder einen lokalen Modellpfad. Ein Container ist nicht automatisch sicher: Imagequelle, Mounts, Zugangsdaten, Netzwerk, Rechte und die Belege vor dem Schreiben müssen zusammenpassen.
Schnelle Antwort: den passenden Docker-Weg wählen
Docker Sandbox passt zu einem verwalteten isolierten Workspace. Trotzdem musst du Mounts, den empfangenden Provider und die Sandbox-Rechte kennen.
Docker Model Runner stellt den Modelldienst bereit, während OpenCode die Coding-Oberfläche bleibt. Ein erreichbares Modell richtet Mounts und Rechte nicht ein.
Ein eigenes Image fixiert Node, Pakete oder Zertifikate, bringt aber Verantwortung für Dockerfile, Benutzer, Updates und Secrets.
Docker-Wege und ihre Grenzen
`opencode docker image`, `opencode docker compose` und `docker opencode` sind Varianten derselben Entscheidung und keine eigenen Seiten.
Für ein Repository genügt das kleinste Image mit CLI und Provider-Zugriff. Zusätzliche Dienste und ein Home-Mount erschweren den ersten Test.
Wenn Datenschutz der Grund ist, dokumentiere Modelldienst und Coding-Agent getrennt. Ein Endpoint ersetzt keine Mount- und Rechteprüfung.
| Weg | Geeignet für | Wichtige Grenze |
|---|---|---|
| Docker Sandbox | Schneller isolierter Workspace | Authentifizierung, Mount und Rechte |
| Docker Model Runner | Lokale oder private Inferenz | Modell, Endpoint, Port, Kontext |
| Eigenes Image | Fixierte Tools und Team | Dockerfile, Benutzer, Updates, Secrets |
| Docker Compose | Mehrere Services | Namen, Netzwerk, Volumes, Cleanup |
Vor OpenCode im Container prüfen
Prüfe die Imagequelle, bevor Quellcode gemountet wird. Bevorzuge offizielle Dokumentation oder ein nachvollziehbares Dockerfile.
Mounte nur das Projekt und vermeide Home, SSH-Schlüssel, Cloud-Credentials und den Docker-Socket des Hosts.
Injecte Credentials zur Laufzeit, niemals in Dockerfile, Layern, versioniertem Compose oder Shell-History; prüfe `.dockerignore`.
Starte mit kleinem Repository, Lesetest, kleiner Dokumentationsänderung, Git-Diff und ungefährlichem Test.
7 Checks für ein zuverlässiges Setup
Die Checks machen den Start nachvollziehbar: fehlendes Modell weist auf den Endpoint, falsche Dateien auf den Mount und unerlaubte Writes auf Rechte hin.
Nutze dieselbe Reihenfolge auf Laptop und CI und notiere Image, Provider, Pfad und Befehl.
Eine Antwort beweist keine Sicherheit, wenn Image oder Volume zu breit sind.
- Image prüfen Name, Tag/Digest, Basis, Updatequelle und Benutzer notieren.
- Workspace begrenzen Nur Projekt mounten und separaten Branch oder Worktree nutzen.
- Provider verbinden Einen Endpoint prüfen und den Schlüssel außerhalb halten.
- Modell bestätigen Antwort, ID, Kontext und Port im Container prüfen.
- Lesetest starten Vor Änderungen eine Datei zusammenfassen lassen.
- Kleinen Diff prüfen Dokumentation oder Fixture ändern und fremde Dateien ablehnen.
- Cleanup dokumentieren Container stoppen, temporäre Volumes entfernen und Fix notieren.
Docker Model Runner und OpenAI-kompatible Endpoints
Docker Model Runner eignet sich für lokale oder private Inferenz. Aktiviere ein Coding-Modell, prüfe es im selben Netzwerk und verwende genaue URL und ID.
Teste Endpoint und OpenCode getrennt und prüfe anschließend Kontext, Rechte und Session.
Begrenze Schnittstelle und Ports und dokumentiere Host-Gateway, Compose-Service oder Remote-Server.
# 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 opencodeBerechtigungen, Secrets, Ports und Git
Die Containergrenze ist nur ein Teil des Rechte-Modells. OpenCode, Docker, Linux-Benutzer, Provider und Git müssen zusammenpassen.
Dokumentiere Minimalbefehl, Cleanup, Volumes, private Ports und reproduzierbares Image.
Der erste Write bleibt klein; bei Secrets, Bundles oder Dateien außerhalb des Projekts stoppen.
| Prüfung | Sicherer Standard | Warnsignal |
|---|---|---|
| Secrets | Laufzeit-Injection und Rotation | Schlüssel in Dockerfile, Layern oder Compose |
| Dateien | Ein Projekt, non-root, Worktree | Home, SSH oder Docker-Socket |
| Netzwerk | Nur Endpoint und nötige Ports | Alle Ports oder öffentlicher Endpoint |
| Git | Status und Diff nach jedem Write | Write außerhalb des Worktrees |
| Image | Geprüfter Digest oder Tag | `latest` ohne Verantwortlichen |
Fehlersuche: die fehlerhafte Schicht isolieren
Wenn `opencode` fehlt, prüfe Image, PATH, Entrypoint und Benutzer vor Provider-Änderungen.
Bei leerer Modellliste teste den Endpoint im Container und prüfe URL, DNS, Port, Credentials und ID; `localhost` kann den Container selbst meinen.
Bei guten Antworten und schlechten Edits Mount und Umfang verkleinern, Rechte prüfen, Lesetest wiederholen und Diff notieren.
Wenn ein erster Test funktioniert, aber der nächste Lauf andere Dateien sieht, vergleiche zuerst den Mount und das Arbeitsverzeichnis. Ein sauberer Status vor dem Start, ein kurzer Read-only-Task und ein gespeicherter Diff zeigen, ob das Problem aus dem Prompt, aus den Rechten oder aus dem Container kommt.
Für reproduzierbare Teamläufe gehören Image-Tag oder Digest, Provider, Modell-ID, Port, Branch und Cleanup-Befehl in dasselbe Protokoll. So kann eine Kollegin den Lauf ohne geratenen Hostnamen wiederholen. Ändert sich das Image, prüfe erneut Benutzer, PATH, Zertifikate und die erlaubten Volumes, bevor du Schreibrechte erweiterst.
Bei einem Timeout trenne Netzwerk und Modellprüfung: teste zuerst eine kurze Anfrage am Endpoint und danach dieselbe Anfrage über OpenCode. Bei unerwarteten Änderungen stoppe den Container, sichere den Diff und starte einen neuen Lauf mit kleinerem Mount. Diese Reihenfolge spart Zeit und verhindert, dass ein zweiter Fehler den ersten verdeckt.
| Symptom | Wahrscheinliche Schicht | Erster Check |
|---|---|---|
| Befehl fehlt | Image oder PATH | Version im gleichen Image und Verzeichnis |
| Provider ohne Modell | Endpoint oder ID | Im Container testen und ID vergleichen |
| Dateien fehlen | Mount oder Workdir | Workdir und Projekt anzeigen |
| Timeout | Netz, Port, Quota oder Modell | Kurze Anfrage und Netzwerk prüfen |
| Unerwartete Dateien | Mount oder Rechte | Stoppen, Git prüfen, Mount verkleinern |
OpenCode mit Docker FAQ
Kann OpenCode in Docker laufen?
Ja. Image, Mount, Credentials, Netzwerk und Rechte müssen trotzdem geprüft werden.
Docker Sandbox oder eigenes Image?
Sandbox für verwaltete Isolation; eigenes Image für feste Abhängigkeiten, wenn du es pflegen kannst.
Wie verbinde ich Model Runner?
Dienst prüfen und die genaue OpenAI-kompatible URL und Modell-ID im selben Netzwerk verwenden.
Was soll ich mounten?
Nur Projekt oder Worktree; Home, SSH, Cloud-Credentials und Docker-Socket vermeiden.
Brauche ich Compose?
Nein. Compose passt zu mehreren Services und einem privaten Netzwerk.
Warum sieht der Container kein Modell?
Base URL, localhost, ID, Port, Schlüssel und Service-Name prüfen.
Offizielle Quellen zur Prüfung
Integrationsdetails ändern sich. Prüfe Image, Authentifizierung, Endpoints und Rechte in den offiziellen Dokumenten, bevor du einen Befehl in einem sensiblen Repository nutzt.