logo
0
0
WeChat Login
Forkfrommaikebuke/runtime, aheadmain41 commits, behindmain18 commits
feat: 强化了 agent, 让它总是回复用户

Maikebuke 定制 CNB 运行时


面向开发与日常工程实践的通用容器运行时与工具集,开箱即用:

  • 快速构建 CPU/GPU 两类基础镜像
  • 预置开发工具链(git、ripgrep、zsh、tmux、code-server、CMake 等)
  • 统一的 Python/Node 环境管理(uv + nvm),含常用 AI/PyTorch 工具包(GPU 镜像)
  • 一键备份/恢复常用配置到 CNB 的全局“漫游目录”
  • 提供制品上传脚本,支持 CNB Releases、HuggingFace、ModelScope

目录结构

  • docker/Dockerfile 各类工具/环境的构建脚本
  • scripts/build-docker.sh 构建与(可选)推送镜像的脚本
  • scripts/cnb/roaming_env.sh 备份/恢复常用配置到 CNB 全局漫游目录
  • scripts/cnb/upload_release.py 将附件上传到当前仓库的 Release
  • scripts/hf/upload_huggingface.sh 上传制品到 HuggingFace Hub
  • scripts/hf/upload_modelscope.sh 上传制品到 ModelScope
  • scripts/hf/upload_single_file.sh 通过 CNB 通用附件镜像上传单文件
  • .ide/settings.json 作为 code-server 的默认设置

先决条件

  • 已安装 Docker 并可登录你的镜像仓库
  • 准备以下环境变量(根据你的仓库/账号修改):
    • CNB_DOCKER_REGISTRY 镜像仓库地址(例如: registry.example.com
    • CNB_REPO_SLUG_LOWERCASE 仓库路径(例如: maikebuke/runtime),用于拼装镜像名
    • 可选:自动计算远端版本时需要
      • CNB_TOKEN_USER_NAME 用于访问 Registry API 的用户名
      • CNB_TOKEN 用于访问 Registry API 的密码/Token

快速开始

  1. 构建本地镜像(不推送)
# CPU 版
./scripts/build-docker.sh --type cpu --no-push 1.0.0
# GPU 版
./scripts/build-docker.sh --type gpu --no-push 1.0.0
# 同时构建 CPU/GPU(自动计算下一个版本号)
./scripts/build-docker.sh --type all --no-push
  1. 构建并推送到远端
# 使用指定版本号
./scripts/build-docker.sh --type cpu 1.0.1
# 由脚本自动计算远端最新 tag 的下一个版本并推送
./scripts/build-docker.sh --type all

脚本参数说明(来自内置说明):

  • --type 构建类型:cpu | gpu | all(默认 all
  • --no-push 仅本地构建,不推送/验证
  • <VERSION_TAG> 可选手动指定版本(如 0.0.1),省略时自动计算

构建完成后会同时打上 :latest tag,并在推送模式下进行远端存在性校验。

Dockerfile 关键点

  • 基础镜像可选(构建时通过 BASE_IMAGE 传入):
    • CPU: debian:bookworm
    • GPU: nvidia/cuda:12.9.1-cudnn-devel-ubuntu24.04
  • 预配置腾讯云镜像源,加速系统与 Python 包安装
  • 预装开发/网络/调试工具,安装 code-server 与常用 VS Code 扩展
  • Python 使用 uv 管理,多数常用 AI 相关包在 GPU 版本中预装
  • Node 使用 nvm 安装指定版本,并预装若干 CLI Agents
  • 容器默认入口为 zsh,自动加载 $HOME/.local/bin/env(如存在)

CNB 官方默认的环境

CNB 官方推荐的镜像加速

更新镜像

# step 1. 修改 docker/Dockerfile 的内容
# step 2. 构建脚本
./scripts/build-docker.sh --no-push
# step 3. 构建并推送
./scripts/build-docker.sh

常用脚本

  • 构建镜像:scripts/build-docker.sh
    • 依赖 CNB_DOCKER_REGISTRYCNB_REPO_SLUG_LOWERCASE
    • 自动计算版本时还需 CNB_TOKEN_USER_NAMECNB_TOKEN
  • 配置漫游:scripts/cnb/roaming_env.sh
    • 备份到/恢复自 ~/.cnb/backups,支持 runtime/repo 两个维度
    • 示例:
      • 恢复全部:roaming_env.sh --load
      • 仅备份仓库关联配置:roaming_env.sh --store --scope repo
  • 上传 Release 附件:scripts/cnb/upload_release.py
    • 需要 CNB_REPO_SLUGCNB_TOKEN
    • 示例:python scripts/cnb/upload_release.py path/to/file --tag v0.0.1
  • 上传到 ModelScope/HuggingFace:scripts/hf/*
    • 首次使用会自动安装所需 CLI

GPU 相关

  • GPU 镜像会安装 PyTorch 与常用生态包,并尝试安装 flash-attn(该步骤耗时且可能受环境影响失败)
  • 构建 GPU 镜像时基础镜像需包含 CUDA 与 cuDNN(脚本已内置推荐版本)

开发体验

  • 预装 code-server 与常用扩展;.ide/settings.json 会被复制为默认设置
  • 默认 shell 为 zsh,并启用 Oh My Zsh(ys 主题)

文件介绍(简要)

  • docker/Dockerfile 构建镜像的 Dockerfile
  • scripts/build-docker.sh 构建镜像的脚本
  • scripts/roaming_env.sh 备份常用的环境配置到 CNB 的全局漫游目录中
  • scripts/upload_release.py 将指定的附件上传到当前仓库的 Release 中

About

No description, topics, or website provided.
Language
Python47.5%
Shell36.6%
Dockerfile15.9%