跳到正文
发现
ContainerDesktop:macOS 容器图形管理工具
桌面应用开发者工具

ContainerDesktop:macOS 容器图形管理工具

为 Apple container CLI 提供原生 SwiftUI 图形界面,让 macOS 用户在桌面管理容器、镜像与集群。

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

详细介绍

项目简介

Container Desktop 是一个原生 macOS 应用,为 Apple 官方的 container CLI 提供 Docker Desktop 风格的图形界面。它不重新实现任何容器逻辑:每个操作都会调用官方 container CLI 并解析其 JSON 输出,因此界面显示的内容与命令行一致。

应用使用 SwiftUI 编写,采用 Liquid Glass 风格,支持英文、波兰文和简体中文,并带有一个 WidgetKit 桌面小组件。

主要功能

容器管理

  • 卡片或表格视图:卡片显示状态块、实时 CPU 与内存仪表、可点击的端口标签;表格视图便于密集扫读
  • 列表显示实时状态、IP 地址和映射端口,支持一键在浏览器中打开
  • 详情面板包含日志、实时统计、文件浏览、inspect 和内嵌终端(通过 SwiftTerm 执行 exec -it)
  • 原生日志查看器:连续选择、全部复制、可选时间戳、按严重级别着色(错误红色、警告橙色)
  • 启动 / 停止 / 重启 / kill / 删除 / prune,带逐容器进度指示
  • 运行容器对话框:端口、环境变量、卷(可选已有卷或本地文件夹)、资源、网络、架构(arm64 / amd64,自动 Rosetta)、entrypoint、--rm,并实时预览可复制的完整命令
  • 可修改已有容器的命令 / 配置,应用会以原配置预填并重建容器(卷数据保留)
  • 镜像拉取进度实时流式显示

Docker Compose

粘贴 docker-compose.yml,应用会将其翻译成 container run 调用:创建项目网络、按依赖排序、在列表中按项目分组并支持整体启停。通过 x-init: true 服务扩展可执行一次性初始化任务(如建库),并在其他服务启动前完成。host.containers.internal 别名解析到项目网络网关,服务主机名通过 /etc/hosts 在容器间互通。

日志查看器 内嵌终端

实时统计

  • CPU 百分比、内存、网络与磁盘吞吐、进程数,每秒刷新
  • 基于 Swift Charts,可选择时间窗口(1–15 分钟)并悬停查看采样点

镜像、卷、网络、Registry、机器

  • 拉取与构建(Dockerfile)并流式显示进度,从镜像运行,打标签 / 删除 / prune / inspect
  • 卷与网络的创建、删除、prune、inspect,卷支持文件浏览
  • Registry 登录(密码通过 stdin 安全传入)
  • 容器机器的创建、设为默认、停止、删除

Kubernetes 与 Helm

  • 通过 container k8s 插件(container 1.2.1+,Apple 标记为 EXPERIMENTAL)创建本地集群,可选名称、CPU、内存与节点镜像,支持启动、删除,以及把本地构建的镜像加载进集群 containerd
  • 集群创建过程流式显示进度,首次运行需下载约 850 MB 的节点镜像
  • Helm:仓库管理、chart 搜索、release 升级、通过 helm history 回滚与卸载
  • 由 chart 自带 values.yaml 生成的动态表单,支持类型感知控件、注释帮助文本、键过滤和同步的原始 YAML 标签页;只有改动过的键会写入 -f
  • Check(dry run) 先在集群上渲染,提前暴露模板错误与 values.schema.json 违规
  • 所有 helm 命令都绑定到所选集群的应用托管 kubeconfig,不会读取或修改你的 ~/.kube/config

桌面小组件与系统

  • WidgetKit 小组件三种尺寸:运行数量与服务健康、带 CPU 的实时列表、按 Compose 项目分组
  • 服务状态与安全启停、磁盘占用与可回收空间、builder 管理、本地 DNS 域名、系统属性与内置服务日志查看器
  • 菜单栏附加项:服务状态、运行中容器一键停止、全部停止、跳转任意分区
  • 通过 Sparkle 自动更新,appcast 由 GitHub Pages 提供并用 EdDSA 签名

安装与使用

系统要求

  • Apple Silicon 上的 macOS 26 (Tahoe)
  • 已安装 container CLI(默认路径 /usr/local/bin/container,可在设置中指定自定义路径)
  • 可选:helm 用于 Helm 分区(brew install helm);本地 Kubernetes 集群需要 container 1.2.1+

从 release DMG 安装

从 Releases 下载 DMG,打开后把 Container Desktop 拖到「应用程序」文件夹。

从源码构建

brew install xcodegen
git clone https://github.com/sembsa/ContainerDesktop.git && cd ContainerDesktop
xcodegen generate
xcodebuild -project ContainerGUI.xcodeproj -scheme ContainerGUI \
  -destination 'platform=macOS' -derivedDataPath .build build
open .build/Build/Products/Debug/ContainerGUI.app

运行测试:

xcodebuild test -project ContainerGUI.xcodeproj -scheme ContainerGUI \
  -destination 'platform=macOS' -derivedDataPath .build

生成可分发的 DMG(ad-hoc 签名,未公证):

scripts/package.sh        # 输出 dist/ContainerDesktop.dmg

注意事项

  • Release 版本目前未做公证(没有付费 Apple Developer 会员)。首次启动时 macOS 会提示来自身份不明的开发者,可到系统设置 → 隐私与安全性点击仍要打开,或手动移除隔离标记:
xattr -dr com.apple.quarantine "/Applications/ContainerGUI.app"
  • 从 0.8.3 起,更新检查会附带一次性生成的随机安装标识、应用版本和 macOS 版本,用于统计使用人数;不会发送 IP 地址、计算机名、账户或硬件信息,Sparkle 的系统信息上报保持关闭。可在设置 → 隐私 → 匿名统计中完全关闭,更新仍可正常工作。
  • 应用运行在 App Sandbox 之外(需要调用外部 CLI),因此通过 DMG 直接分发,未上架 Mac App Store。
  • 更新经 EdDSA 签名校验,且 Sparkle 会清除已安装更新的隔离属性,首次启动之后无需再处理 Gatekeeper。

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

更新记录

  1. v0.10.0当前版本

    新增容器快照:可保存状态、查看历史并回滚,需 container 1.6;Kubernetes 集群可创建 worker 节点;Compose 服务可按服务名互访;兼容 container 1.6 的 container cluster 改名。

评论