Oxcart 下载
菜单

从 Docker Desktop 或 OrbStack 切换到 Oxcart

切换到 Oxcart 只需几分钟:安装后运行 docker context use oxcart,再用 docker save、docker load 和 tar 文件迁移要保留的镜像与卷。Oxcart 可与 Docker Desktop 或 OrbStack 并存,替换它们的 docker 工具前会征求确认,一条命令即可切回。

更新于

开始之前

  • 一台运行 macOS 26 或更高版本的 Apple 芯片 Mac。
  • 保持其他应用运行,以便复制镜像和卷时,其上下文能够响应。
  • 列出真正需要的内容:无法重新拉取的镜像,以及存有数据(数据库、上传文件)的命名卷。其他内容重新创建更快。
  • 先选择一个有代表性的 Compose 项目试迁移。确认服务能启动、数据存在、已发布端口能响应,再迁移其余项目。

逐步迁移到 Oxcart

  1. 安装 Oxcart。 下载 Oxcart(Apple 芯片,macOS 26 或更高版本)并打开。设置可离线完成,只需几秒;用于链接命令行工具的辅助程序需要输入一次管理员密码。
  2. 决定如何处理 docker 工具。 如果 Docker Desktop 或 OrbStack 已安装 docker,Oxcart 会列出每个工具的两个版本,替换前征求确认。Replace 默认开启;Uninstall 会恢复其他应用的工具。
  3. 选择 oxcart 上下文。 设置会创建 oxcart Docker 上下文。仅当当前上下文为 default 且无响应时,才将它设为当前上下文。因此,从其他应用迁移时,通常需自行运行 docker context use oxcart。
  4. 迁移所需镜像。 重新拉取,或将其他应用的 docker save 输出流式传入 docker load,以保留标签和摘要。
  5. 迁移存有数据的卷。 在其他应用中通过小型容器将每个命名卷打包成 tar 文件,再解包到 Oxcart 的新卷中。
  6. 启动 Compose 项目。 在每个项目文件夹中运行 docker compose up -d --wait。以相同名称迁移的卷会被自动使用。
  7. 将固定连接地址的工具指向 Oxcart。 遵循 Docker 上下文的工具会自动找到 Oxcart。仅读取 DOCKER_HOST 的工具,需要将该变量设为 oxcart 上下文的端点。

命令

查看上下文并切换

docker context ls

列表会显示 oxcart 和其他应用的上下文,当前上下文旁有星号。接着:

docker context use oxcart

从其他应用复制镜像

无需中间文件,将镜像从一个引擎直接流式传输到另一个引擎。标签和摘要会一并保留。

# 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

一次迁移所有带标签的镜像:

docker --context "$OTHER" images --format '{{.Repository}}:{{.Tag}}' | grep -v '<none>' \
  | xargs docker --context "$OTHER" save | docker --context oxcart load

由 Dockerfile 构建的镜像,通常在 Oxcart 中用 docker build 或 docker compose build 重新构建更快;我们的基准测试中,利用缓存重新构建仅需 121 ms。

迁移命名卷

此示例迁移名为 pgdata 的 Postgres 卷。它将 tar 文件写入用户主文件夹下的一个文件夹:Oxcart 默认将主文件夹共享给容器,其他应用也需能对其进行绑定挂载。先停止使用该卷的容器,以确保复制的数据一致。

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 的卷名称格式为 <project>_<volume>。在 Oxcart 中用相同的完整名称创建卷(可在其他上下文运行 docker volume ls 查看),Compose 就会使用它。

启动 Compose 项目

cd ~/code/myproject
docker compose up -d --wait

健康检查依赖、up --wait、服务名 DNS、init: true 和 network_mode: service: 均可照常使用。参见 Apple 芯片上的 Docker Compose。

读取 DOCKER_HOST 的工具

Oxcart 从不创建或替换 /var/run/docker.sock;docker CLI、Compose、Buildx 和大多数 SDK 都遵循当前上下文。如果工具仅读取 DOCKER_HOST,请将其指向 Oxcart:

export DOCKER_HOST="$(docker context inspect oxcart --format '{{.Endpoints.docker.Host}}')"

在容器内,Testcontainers、docker-outside-of-docker、Portainer 和 Traefik 可照常挂载 /var/run/docker.sock。参见 Mac 上的 Dev Containers 和 Testcontainers。

切回原工具

docker context use <other-context>   # back to the other app
docker context use oxcart            # and to Oxcart again

切换后会有哪些变化

在同一台 Apple 芯片 Mac 上测量;中位数,越低越好
操作Oxcart 0.1.2OrbStack 2.2.3Docker Desktop 4.94.0
docker run --rm … true42.3 ms220 ms143 ms
docker stop19.2 ms107 ms128 ms
停止并删除 20 个容器76.7 ms1,224 ms683 ms
使用缓存构建121 ms283 ms149 ms

Oxcart 0.1.2 于 2026-10-10 使用随附的 docker 29.9 客户端测量;OrbStack 2.2.3 和 Docker Desktop 4.94.0 于同日较早时间,使用同一台 Mac、同一套测试工具和 docker 29.4 测量。完整表格:与 Docker Desktop 对比及与 OrbStack 对比。

此外,还有面向编程智能体的本地 MCP 服务器(粘贴一次即可设置)、按仓库和分支分组的端口,以及遵循 VPN、DNS 和防火墙规则的容器流量(网络指南)。

常见问题

需要先卸载 Docker Desktop 或 OrbStack 吗?

不需要。Oxcart 可与它们并存,并使用自己的 oxcart Docker 上下文。用 docker context use 切换即可。在迁移完所需内容之前,请保留其他应用。

Oxcart 会改变当前 Docker 上下文吗?

仅当当前上下文是 default 且无响应时才会更改。如果当前使用其他应用的上下文,Oxcart 会保持原样,由你通过 docker context use oxcart 选择。

镜像和卷会自动迁移吗?

不会。各应用分别保存自己的镜像和卷。重新拉取镜像,或通过 docker save | docker load 流式传输;存有数据的命名卷则按上文所示用 tar 文件迁移。存有缓存或其他临时数据的卷可直接重新创建。

镜像仓库登录信息如何处理?

如果拉取时要求凭据,运行一次 docker login。Oxcart 通过 docker-credential-osxkeychain 将密码存储在 macOS 钥匙串中;config.json 仅保存仓库名称。

可以保留现有开发工作流吗?

可以。继续使用 docker CLI、Compose、Buildx、Dev Containers 和 Testcontainers。Oxcart 支持特权容器,包括 Compose 中的 privileged: true。先迁移一个项目,检查其端口和数据,再在准备好后切换其余项目。整个过程中,其他 Docker 上下文始终可用。

更新会保留容器吗?

会。Oxcart 更新会保留所有容器、镜像、卷和网络。

如何切回?

使用其他应用的上下文名称运行 docker context use。如果卸载 Oxcart,Uninstall 会恢复它曾替换的所有 docker 工具。

来源与方法

  • 设置、命令行工具和 Docker 上下文:以发布的 Oxcart 0.1.3 为准。
  • 兼容性:2026-10-10 在 Oxcart 上测试(保留标签与摘要的保存和加载、Compose、容器内 Docker 套接字)。
  • 基准测试:Oxcart 0.1.2、OrbStack 2.2.3 和 Docker Desktop 4.94.0,于 2026-10-10 在同一台 Apple M5 Max 上测量,各配置 8 个 CPU 和 12 GB,每次仅运行一款产品,五次采样的中位数。
  • 其他应用的上下文名称因应用和版本而异:请通过 docker context ls 查看。

在你自己的项目中试用 Oxcart

免费试用 60 天。之后每位用户、每个主版本 $20,无需订阅。

Apple silicon · macOS 26 或更新版本

继续阅读

版本更新说明

Oxcart 0.1.4

最新版本

许可证功能与细节改进。

  • 通过安全邮件链接激活许可证。
  • 在 Settings 中管理许可证和 Mac。
  • 离线验证许可证。
  • 性能提升、界面优化与问题修复。

需要 macOS 26.0 或更高版本

Oxcart 0.1.3

空闲时回收内存。

  • 没有容器运行时回收 VM 内存。
  • 保留容器、镜像、卷和网络。

需要 macOS 26.0 或更高版本

Oxcart 0.1.2

命令行工具集成。

  • 在 Oxcart 自带的 Docker 工具与已安装的 Docker 工具之间切换。
  • 界面优化。

需要 macOS 26.0 或更高版本

Oxcart 0.1.1

内置 Docker 工具与智能体控制。

  • 自带 Docker CLI 29.9、Compose 5.6 和 Buildx 0.38。
  • Docker 上下文集成与安全的钥匙串凭据存储。
  • MCP 智能体连接,支持为各智能体设置权限或阻止访问。

需要 macOS 26.0 或更高版本

Oxcart 0.1.0

适用于 Apple 芯片的 Docker 兼容容器。

  • 兼容 Docker CLI、Compose 和 Buildx。
  • 自带运行时组件,可离线设置。
  • 按项目和 Git 分支整理端口。
  • MCP 集成,默认仅允许只读访问。
  • 经过验证的自动更新。

需要 macOS 26.0 或更高版本