Bevor du beginnst
- Ein Mac mit Apple-Chip und macOS 26 oder neuer.
- Die andere App muss laufen, damit ihr Kontext beim Kopieren von Images und Volumes antwortet.
- Eine Liste dessen, was du wirklich brauchst: Images, die du nicht erneut herunterladen kannst, und benannte Volumes mit Daten (Datenbanken, Uploads). Alles andere lässt sich schneller neu erstellen.
- Ein repräsentatives Compose-Projekt zum ersten Ausprobieren. Prüfe, ob seine Services starten, seine Daten vorhanden sind und seine veröffentlichten Ports antworten, bevor du den Rest überträgst.
Schritt für Schritt zu Oxcart wechseln
- Installiere Oxcart. Lade Oxcart herunter (Apple-Chip, macOS 26 oder neuer) und öffne die App. Die Einrichtung erfolgt offline und dauert Sekunden; sie fragt einmal nach einem Administratorpasswort für das Hilfsprogramm, das die Kommandozeilenwerkzeuge verknüpft.
- Entscheide über die docker-Werkzeuge. Wenn Docker Desktop oder OrbStack
dockerinstalliert hat, zeigt Oxcart jedes Werkzeug mit beiden Versionen an und fragt vor dem Ersetzen nach. Replace ist standardmäßig aktiviert; Uninstall stellt die Werkzeuge der anderen App wieder her. - Wähle den Kontext oxcart. Die Einrichtung erstellt einen Docker-Kontext namens
oxcart. Er wird nur dann zum aktuellen Kontext, wenn der bisherigedefaultist und dort nichts antwortet. Nach einer anderen App führst du daher meist selbstdocker context use oxcartaus. - Übertrage die benötigten Images. Lade sie erneut herunter oder übertrage sie direkt mit
docker saveaus der anderen App andocker load. Tags und Digests bleiben dabei erhalten. - Übertrage Volumes mit Daten. Packe jedes benannte Volume über einen kleinen Container in der anderen App in eine tar-Datei und entpacke sie anschließend in ein neues Volume in Oxcart.
- Starte deine Compose-Projekte. Führe in jedem Projektordner
docker compose up -d --waitaus. Volumes, die du unter demselben Namen übertragen hast, werden verwendet. - Richte fest konfigurierte Werkzeuge auf Oxcart aus. Werkzeuge, die dem Docker-Kontext folgen, finden Oxcart automatisch. Bei einem Werkzeug, das nur
DOCKER_HOSTausliest, musst du diese Variable auf den Endpunkt des Kontextsoxcartsetzen.
Die Befehle
Kontexte anzeigen und wechseln
docker context ls Die Liste zeigt den Kontext oxcart und den der anderen App, mit einem Sternchen beim aktuellen Kontext. Anschließend:
docker context use oxcart Images aus der anderen App kopieren
Übertrage Images direkt von einer Engine zur anderen, ohne Zwischendatei. Tags und Digests werden übernommen.
# OTHER is the other app's context name from `docker context ls`
OTHER=<other-context>
docker --context "$OTHER" save postgres:17-alpine myapp:dev | docker --context oxcart load So überträgst du alle Images mit Tags auf einmal:
docker --context "$OTHER" images --format '{{.Repository}}:{{.Tag}}' | grep -v '<none>' \
| xargs docker --context "$OTHER" save | docker --context oxcart load Images, die du aus einem Dockerfile gebaut hast, lassen sich in Oxcart mit docker build oder docker compose build oft schneller neu bauen; erneute Builds mit Cache dauerten in unserem Benchmark 121 ms.
Ein benanntes Volume übertragen
Dieses Beispiel überträgt ein Postgres-Volume namens pgdata. Es schreibt eine tar-Datei in einen Ordner in deinem Benutzerordner: Oxcart gibt deinen Benutzerordner standardmäßig für Container frei, und auch die andere App muss ihn per Bind-Mount einbinden können. Stoppe zuerst die Container, die das Volume verwenden, damit die Kopie konsistent ist.
mkdir -p ~/volume-move && cd ~/volume-move
# 1. Pack the volume in the other app
docker --context "$OTHER" run --rm -v pgdata:/from -v "$PWD":/backup alpine \
tar -C /from -czf /backup/pgdata.tgz .
# 2. Unpack it into a new volume in Oxcart
docker --context oxcart volume create pgdata
docker --context oxcart run --rm -v pgdata:/to -v "$PWD":/backup alpine \
tar -C /to -xzf /backup/pgdata.tgz Compose benennt Volumes nach dem Muster <project>_<volume>. Erstelle das Volume in Oxcart unter demselben vollständigen Namen (siehe docker volume ls im anderen Kontext), damit Compose es verwendet.
Deine Compose-Projekte starten
cd ~/code/myproject
docker compose up -d --wait Healthcheck-Abhängigkeiten, up --wait, DNS über Servicenamen, init: true und network_mode: service: funktionieren wie zuvor. Siehe Docker Compose auf Apple-Chips.
Werkzeuge, die DOCKER_HOST auslesen
Oxcart erstellt oder ersetzt niemals /var/run/docker.sock; die docker-CLI, Compose, Buildx und die meisten SDKs folgen dem aktuellen Kontext. Wenn ein Werkzeug nur DOCKER_HOST ausliest, richte es auf Oxcart aus:
export DOCKER_HOST="$(docker context inspect oxcart --format '{{.Endpoints.docker.Host}}')" Innerhalb von Containern funktioniert das Einbinden von /var/run/docker.sock wie gewohnt für Testcontainers, docker-outside-of-docker, Portainer und Traefik. Siehe Dev Containers und Testcontainers auf dem Mac.
Zurückwechseln
docker context use <other-context> # back to the other app
docker context use oxcart # and to Oxcart again Was sich nach dem Wechsel für dich ändert
| Vorgang | Oxcart 0.1.2 | OrbStack 2.2.3 | Docker Desktop 4.94.0 |
|---|---|---|---|
docker run --rm … true | 42.3 ms | 220 ms | 143 ms |
docker stop | 19.2 ms | 107 ms | 128 ms |
| 20 Container stoppen und entfernen | 76.7 ms | 1,224 ms | 683 ms |
| Build mit Cache | 121 ms | 283 ms | 149 ms |
Oxcart 0.1.2 wurde am 2026-10-10 mit dem mitgelieferten docker-Client 29.9 gemessen; OrbStack 2.2.3 und Docker Desktop 4.94.0 früher am selben Tag auf demselben Mac mit demselben Messaufbau und docker 29.4. Vollständige Tabellen: Vergleich mit Docker Desktop und Vergleich mit OrbStack.
Du erhältst außerdem einen lokalen MCP-Server für Coding-Agenten (mit einmal Einfügen einrichten), nach Repository und Branch gruppierte Ports sowie Container-Traffic, der deinen VPN-, DNS- und Firewall-Regeln folgt (Netzwerkanleitung).
Fragen
Muss ich Docker Desktop oder OrbStack zuerst deinstallieren?
Nein. Oxcart wird daneben mit seinem eigenen Docker-Kontext oxcart installiert. Wechsle mit docker context use. Lass die andere App installiert, bis du alles Nötige übertragen hast.
Ändert Oxcart meinen aktuellen Docker-Kontext?
Nur wenn der aktuelle Kontext default ist und dort nichts antwortet. Ist der Kontext einer anderen App aktiv, lässt Oxcart ihn unverändert, und du wählst mit docker context use oxcart selbst.
Werden meine Images und Volumes automatisch übernommen?
Nein. Jede App verwaltet ihre eigenen Images und Volumes. Lade Images erneut herunter oder übertrage sie direkt mit docker save | docker load; übertrage benannte Volumes mit Daten wie oben gezeigt über eine tar-Datei. Volumes mit Caches oder anderen entbehrlichen Daten kannst du einfach neu erstellen.
Was passiert mit meinen Registry-Anmeldungen?
Wenn ein Pull Anmeldedaten verlangt, führe einmal docker login aus. Oxcart speichert das Passwort über docker-credential-osxkeychain im macOS-Schlüsselbund; in config.json bleibt nur der Registry-Name.
Kann ich meinen bisherigen Entwicklungsablauf beibehalten?
Ja. Verwende weiterhin die docker-CLI, Compose, Buildx, Dev Containers und Testcontainers. Oxcart unterstützt privilegierte Container, einschließlich privileged: true in Compose. Übertrage zuerst ein Projekt, prüfe seine Ports und Daten und wechsle dann mit dem Rest, wenn du bereit bist. Dein anderer Docker-Kontext bleibt die ganze Zeit verfügbar.
Bleiben meine Container bei Updates erhalten?
Ja. Ein Oxcart-Update erhält alle Container, Images, Volumes und Netzwerke.
Wie wechsle ich zurück?
Führe docker context use mit dem Kontextnamen der anderen App aus. Wenn du Oxcart deinstallierst, stellt Uninstall alle ersetzten docker-Werkzeuge wieder her.
Quellen und Methode
- Einrichtung, Kommandozeilenwerkzeuge und Docker-Kontext: Oxcart 0.1.3 in der ausgelieferten Version.
- Kompatibilität: am 2026-10-10 mit Oxcart getestet (Speichern und Laden mit erhaltenen Tags und Digests, Compose, Docker-Socket in Containern).
- Benchmarks: Oxcart 0.1.2, OrbStack 2.2.3 und Docker Desktop 4.94.0, gemessen am 2026-10-10 auf einem Apple M5 Max, jeweils 8 CPUs und 12 GB, ein Produkt nach dem anderen, Mediane aus fünf Messungen.
- Die Kontextnamen der anderen Apps hängen von App und Version ab: Lies sie mit
docker context lsaus.