Skip to content

Latest commit

 

History

History
247 lines (184 loc) · 9.43 KB

File metadata and controls

247 lines (184 loc) · 9.43 KB
ContainerManager

ContainerManager

macOS 原生容器管理桌面应用

基于 Apple Containerization 框架的图形化容器管理工具

Swift 6.2 macOS Tahoe Xcode License


简介

ContainerManager 是一款原生 macOS 桌面应用,为 Apple 官方的 Containerization 框架提供直观的图形化管理界面。无需依赖 Docker Desktop,直接通过 container CLI 管理容器的完整生命周期。

app

核心特性:

  • 容器生命周期管理(创建、启动、停止、重启、删除)
  • 镜像管理(本地浏览、远程搜索、拉取、构建)
  • 数据卷管理(创建、检查、清理无引用卷)
  • 镜像仓库配置与搜索(Docker Hub、GHCR、GCR 等预设支持)
  • 容器内嵌终端(基于 SwiftTerm)
  • 实时资源监控(CPU / 内存)
  • 亮色 / 暗色主题切换

系统要求

项目 要求
macOS 26 (Tahoe) 或更高版本
Xcode 26+(编译所需)
Swift 6.2+
运行时 Apple Containerization CLI (container)

Apple Containerization 框架仅在 macOS 26+ 上可用。

快速开始

环境准备

确保已安装 Apple Containerization 框架并配置好 container CLI 工具。

克隆项目

git clone https://github.com/zxxryu/ContainerManager.git
cd ContainerManager

构建

方式一:Xcode 构建(推荐)

# 直接打开 Xcode 工程
open ContainerManager.xcodeproj

# 或使用命令行构建
xcodebuild -project ContainerManager.xcodeproj \
  -scheme ContainerManager \
  -configuration Release \
  build

方式二:一键构建 DMG 安装包

./build_app.sh

构建产物:

  • App Bundle.build/xcode/Build/Products/Release/ContainerManager.app
  • DMG 安装包dist/ContainerManager-{版本号}.dmg

安装运行

构建完成后直接运行 App Bundle,或将 DMG 中的 ContainerManager.app 拖拽到 /Applications 目录。

项目结构

ContainerManager-AppBundle/
├── ContainerManager/
│   ├── ContainerManagerApp.swift       # App 入口,窗口与菜单配置
│   ├── ContentView.swift               # 主视图,NavigationSplitView 布局
│   ├── Assets.xcassets/                # 图标资源
│   ├── Resources/
│   │   └── Info.plist                   # 应用配置信息
│   ├── Models/                         # 数据模型
│   │   ├── ContainerModels.swift        # 容器、端口映射、资源使用等
│   │   ├── ImageModels.swift           # 镜像、搜索结果、拉取进度等
│   │   ├── RegistryModels.swift        # 仓库配置、预设仓库
│   │   ├── SystemModels.swift          # 系统状态、网络配置、错误类型
│   │   ├── TaskModels.swift            # 异步任务跟踪
│   │   └── VolumeModels.swift          # 数据卷、日志模式
│   ├── Services/                        # 服务层
│   │   ├── ContainerCLIService.swift   # container CLI 封装(核心)
│   │   ├── ConfigurationService.swift  # 配置持久化(UserDefaults)
│   │   └── RegistrySearchService.swift # 仓库搜索(OCI / Docker Hub API)
│   ├── ViewModels/                      # ViewModel 层
│   │   ├── ContainerViewModel.swift     # 容器列表管理
│   │   ├── ImageViewModel.swift        # 镜像管理
│   │   ├── RegistryViewModel.swift      # 仓库配置管理
│   │   ├── VolumeViewModel.swift       # 数据卷管理
│   │   └── TaskManager.swift           # 全局任务管理器
│   └── Views/                           # SwiftUI 视图
│       ├── Containers/                  # 容器相关视图
│       ├── Images/                      # 镜像相关视图
│       ├── Volumes/                     # 数据卷相关视图
│       ├── Registries/                  # 仓库相关视图
│       ├── Settings/                    # 设置页面
│       └── Shared/                      # 共享 UI 组件
├── Package.swift                        # SwiftPM 依赖声明
├── project.yml                           # XcodeGen 工程配置
├── build_app.sh                          # 一键构建 + DMG 打包脚本
├── regenerate_project.sh                  # XcodeGen 重新生成工程
└── dist/                                 # 构建产物(DMG)

架构

采用 MVVM (Model-View-ViewModel) 架构,基于 SwiftUI 的 @Observable 宏实现数据绑定。

┌─────────────────────────────────────────────────┐
│                    Views (SwiftUI)               │
│  ContainerListView / ImageView / VolumeListView   │
│  RegistryListView / SettingsView / Shared        │
└────────────────────┬────────────────────────────┘
                     │
┌────────────────────▼────────────────────────────┐
│                 ViewModels (@Observable)           │
│  ContainerVM / ImageVM / VolumeVM                │
│  RegistryVM / TaskManager                         │
└────────────────────┬────────────────────────────┘
                     │
┌────────────────────▼────────────────────────────┐
│                   Services                       │
│  ContainerCLIService ──► container CLI (Process) │
│  ConfigurationService ──► UserDefaults          │
│  RegistrySearchService ──► HTTP (OCI / Docker)   │
└──────────────────────────────────────────────────┘

应用通过 Process 调用 container CLI 与容器运行时交互,CLI 输出支持 JSON、JSON Lines、表格等多种格式的自动解析。

功能详情

容器管理

  • 列表展示容器状态、端口映射、资源使用(CPU / 内存)
  • 按状态筛选(全部 / 运行中 / 已停止),支持搜索
  • 创建容器:镜像选择、环境变量、端口映射、卷挂载、资源限制、平台选择
  • 完整生命周期操作:启动、停止、重启、强制终止、删除
  • 容器内嵌终端(底部面板 / 弹窗)
  • 实时日志查看(启动日志 / 运行日志)
  • 容器详情检查(网络、环境变量、卷挂载、标签等)
  • 容器克隆(基于已有容器配置创建新容器)

镜像管理

  • 本地镜像列表(仓库、标签、大小、平台)
  • 远程镜像搜索(支持 Docker Hub 专有搜索 API 及 OCI Catalog)
  • 拉取镜像(实时进度显示)
  • 从 Dockerfile 构建镜像
  • 支持选择目标仓库拉取

数据卷管理

  • 命名卷 / 匿名卷分类展示
  • 创建卷(支持容量、日志模式、标签、驱动选项)
  • 卷详情检查(挂载点、驱动选项、原始 JSON)
  • 批量删除与清理无引用卷
  • 磁盘使用统计

镜像仓库

  • 预设仓库:Docker Hub、GHCR、GCR、AWS ECR、Quay.io、阿里云、腾讯云、华为云
  • 自定义仓库添加与编辑
  • 仓库连接测试(延迟检测)
  • 仓库登录认证
  • OCI 标准目录浏览

系统设置

设置项 说明
自动启动系统服务 启动时自动启动 Containerization 服务
刷新间隔 1-30 秒可调
仅显示运行中的容器 快速筛选
默认 CPU / 内存 新建容器的默认资源配置
主题 跟随系统 / 浅色 / 深色

依赖

依赖 版本 用途
Apple Containerization >= 0.34.0 Apple 官方容器管理框架
SwiftTerm 1.0.0 终端模拟器,容器内终端交互

键盘快捷键

快捷键 功能
⌘ N 新建容器
⌘ ⇧ P 拉取镜像
⌘ R 刷新列表
⌘ 1 / ⌘ 2 / ⌘ 3 切换侧边栏视图
⌘ , 打开设置

开发

使用 XcodeGen 管理工程(可选)

如果需要重新生成 Xcode 工程:

brew install xcodegen
./regenerate_project.sh

工程配置

工程使用 project.yml 通过 XcodeGen 定义,支持 SwiftPM 依赖管理。Package.swift 声明了所有外部依赖,构建时自动解析。

许可证

本项目基于 MIT License 开源。


Built with ❤️ using SwiftUI and Apple Containerization