跳到正文
发现
桌面应用开发者工具

Davit:macOS 容器图形界面

Davit 是 Apple container 平台的原生 macOS 图形界面,用 SwiftUI 编写,让你像用 Docker Desktop 一样管理 Linux 容器。

admin
发布于 2026-10-28
浏览
4
访问
0
下载
0
版本
v0.1.39
平台
macOS
该作品还没有经过官方审核。访问演示、下载或复制命令前,请自行确认来源可信。

详细介绍

项目简介

Davit 是 Apple container 平台的原生 macOS 图形界面——可以理解为 OrbStack / Docker Desktop,只不过底层是 Apple 为 Apple silicon 提供的「以轻量虚拟机形式运行 Linux 容器」的技术栈。

整个应用完全用 SwiftUI 编写,没有 Electron,也没有 Web 视图。Davit 链接 Apple 自己的 ContainerAPIClient 库,通过 XPC 直接与 container-apiserver 通信,走的是和 container CLI 相同的链路,从不调用 CLI 二进制文件:列表、生命周期、实时统计、日志流、镜像拉取、卷/网络管理、终端 shell(davit exec)乃至 launchd 服务引导,全部经由 API 完成。

主要功能

  • Dashboard:服务状态与一键启停、资源计数、磁盘占用与可回收空间清理、运行中容器的聚合 CPU 实时图表。
  • Containers:列表内显示每行容器的实时 CPU/内存/IP,支持启动、停止、终止、重启、删除、清理与搜索;Export Filesystem 可将容器 rootfs 导出为 tar;Edit & Recreate 会打开预填好端口/环境变量/挂载/资源/网络的 Run 面板,确认后替换原容器(该平台上容器不可变)。详情页包含 Overview、Logs(-f 跟随、启动日志切换、tail 选择、复制)、Stats(CPU/内存/磁盘 I/O 图表)、Inspect(格式化 JSON)、Terminal(在 Terminal/iTerm 中打开交互 shell)、Files(浏览、下载、上传、删除容器文件系统)。
  • Images:流式进度拉取镜像、Pull Latest 刷新标签、从镜像运行、打标签、删除、清理;展示每个镜像的平台变体、大小、digest、被哪些容器使用,以及 Layers 标签页(每层大小与构建命令)。
  • Volumes / Networks:带容量创建卷、删除、清理、在 Finder 中显示底层镜像、使用中标记与 Browse Files;创建网络(子网 / internal)、删除、清理、查看已连接容器数。
  • Local DNS:在设置 → Platform → Registry & DNS 中创建主机 DNS 域名,并可将某个容器以 name.<domain> 解析。
  • 全局搜索:⌘K 打开命令面板,跳转到任意容器、镜像、卷、网络或 machine。
  • 深链接:davit://container/<id> 可直接打开并定位到该容器详情,例如 open davit://container/my-app。
  • 停止通知:可选开启,容器意外停止时发出 macOS 通知,你手动触发的停止不会打扰。
  • Machines:从任意镜像创建带 CPU/内存规格的轻量通用虚拟机,挂载主目录并有稳定的 .machine DNS 名;支持启动/停止、设为默认、删除,详情页含配置概览、日志流、实时统计与 inspect JSON,一键进入登录 shell。
  • Run Container 面板:选择镜像、名称、命令、端口、环境变量、卷/绑定挂载、CPU/内存上限、网络;可搜索 Docker Hub 或输入任意镜像引用;检测到仅 amd64 镜像时,若已装 Rosetta 会自动加 --arch amd64,否则阻止运行并给出安装命令。
  • Build images:选择构建上下文目录与任意 Dockerfile、目标平台(linux/arm64 或 linux/amd64)、标签与 build-args,由平台 BuildKit 构建后加载并打标签进镜像库。
  • Compose 导入:解析 compose 文件并预览将要创建的服务(按 depends_on 顺序)、命名卷、网络以及每个服务等价的 container run 命令和不支持项的警告,然后创建并启动整个栈,支持 healthcheck、profiles、depends_on 条件、env_file:/entrypoint: 与 ${VAR} 插值。仓库另提供 Davit compose plan | up | down | ps | logs | stop | start | restart | pull | exec 等无界面命令。
  • Registries:登录 Docker Hub / ghcr.io / 任意仓库以拉取私有镜像,凭据保存在登录钥匙串并与 container CLI 共享;也支持 Docker credential helpers(credHelpers/credsStore)。
  • 菜单栏与自动化:菜单栏额外入口展示服务状态与容器快捷操作;可标记容器「Davit 打开时启动」,配合「登录时打开」,开机后容器即处于运行状态。
  • 内置更新:使用 Sparkle 检查更新,更新包带 EdDSA 签名。
  • 平台配置编辑器:设置平台安装根目录与刷新间隔,并编辑默认容器 CPU/内存、registry、本地 DNS 域名、builder 资源/Rosetta 等;只写入与默认值不同的项到 ~/.config/container/config.toml,保留 [plugin.*] 段,每次保存都经平台自身配置加载器校验。

安装与使用

通过 Homebrew 安装:

brew install wouterdebie/tap/davit

(Homebrew 6 首次使用第三方 tap 时需要信任:brew trust wouterdebie/tap。)

也可以从 Releases 或 davit.app 下载已签名并公证的 DMG,打开后把 Davit 拖入 Applications。

首次启动时,如果尚未安装 Apple 的容器平台,Davit 会提示安装(无需管理员权限)。

注意事项

  • 需要 Apple silicon Mac,macOS 15+(推荐 macOS 26,对应 container 1.1),并安装 apple/container。
  • 该平台上容器不可变,修改配置的实际做法是用新参数重建容器(Davit 的 Edit & Recreate 即为此设计)。
  • 平台的 DNS 无法解析 compose 服务名,因此 up/start/restart 会向项目内每个运行中容器写入带 # davit-compose 后缀的托管 /etc/hosts 条目并在每次运行时刷新;在 compose 之外重建的容器会保留过期条目,直到下次 up 或 start;没有 /bin/sh 的镜像无法打补丁(会给出警告)。
  • 每个 compose 服务都是独立的轻量虚拟机,未设置 mem_limit/cpus 的服务会按平台默认值单独预留资源,而不是在整个栈内共享。
  • 应用与 davit compose 的日志输出到 stderr,级别由 DAVIT_LOG_LEVEL(trace|debug|info|notice|warning|error|critical,默认 info)控制。

本作品整理自 GitHub 开源项目 wouterdebie/davit,原作者 @wouterdebie,许可证 MIT。中文介绍由 AI 根据项目 README 整理,以原仓库为准。

更新记录

  1. v0.1.39当前版本

    挂载路径上的文件传输改为通过 exec 流式进行;Compose 导入时可选择要启动的服务;补充贡献文档,并升级 CI 相关依赖。

评论