Davit:macOS 容器图形界面
Davit 是 Apple container 平台的原生 macOS 图形界面,用 SwiftUI 编写,让你像用 Docker Desktop 一样管理 Linux 容器。
- 浏览
- 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/内存规格的轻量通用虚拟机,挂载主目录并有稳定的
.machineDNS 名;支持启动/停止、设为默认、删除,详情页含配置概览、日志流、实时统计与 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 / 任意仓库以拉取私有镜像,凭据保存在登录钥匙串并与
containerCLI 共享;也支持 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,对应
container1.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 整理,以原仓库为准。
更新记录
- v0.1.39当前版本
挂载路径上的文件传输改为通过 exec 流式进行;Compose 导入时可选择要启动的服务;补充贡献文档,并升级 CI 相关依赖。
评论