Skip to content

Repository files navigation

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

About

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

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages