
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
https://img.shields.io/docker/v/fnndsc/pman?sort=semver](https://hub.docker.com/r/fnndsc/pman) https://img.shields.io/github/license/fnndsc/pman](LICENSE) https://github.com/FNNDSC/pman/actions/workflows/ci.yml/badge.svg](https://github.com/FNNDSC/pman/actions/workflows/ci.yml)
[!CAUTION] pman 已被弃用并集成到 https://github.com/FNNDSC/pfcon%E3%80%82
pman(曾代表process manager,流程管理器)是一个https://flask-restful.readthedocs.io/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%EF%BC%8C%E6%8F%90%E4%BE%9BAPI%E7%94%A8%E4%BA%8E%E9%80%9A%E8%BF%87%E5%90%84%E7%A7%8D%E8%B0%83%E5%BA%A6%E5%99%A8%EF%BC%88%E5%A6%82Kubernetes%E3%80%81Podman%E3%80%81Docker Swarm和SLURM)创建作业。它基本上将自身的JSON接口转换为对各种支持的后端的请求。
pman 与https://github.com/FNNDSC/pfcon%E7%B4%A7%E5%AF%86%E8%80%A6%E5%90%88%E3%80%82_pman_ 和 pfcon 通常作为一对部署,提供 pfcon 服务。
pman查看其实际运行的最简单方法是运行https://github.com/FNNDSC/miniChRIS-docker%E3%80%82%E4%BB%A5%E4%B8%8B%E8%AF%B4%E6%98%8E%E9%80%82%E7%94%A8%E4%BA%8E_pman_%E7%9A%84%E9%BB%91%E5%AE%A2%E5%92%8C%E5%BC%80%E5%8F%91%E4%BA%BA%E5%91%98%E3%80%82
本节描述如何设置本地_pman_实例进行开发。
这些说明使用Docker和Docker Swarm在容器内运行_pman_以调度作业。启用代码更改的热重载。
shelldocker swarm init --advertise-addr 127.0.0.1 docker compose up -d
要使用docker stack deploy运行完整测试,请运行测试工具test_swarm.sh。
shell./test_swarm.sh
_pman_必须能够通过与Podman套接字通信来通过Podman调度容器。
shellsystemctl --user start podman.service export DOCKER_HOST="$(podman info --format '{{ .Host.RemoteSocket.Path }}')"
使用Python安装_pman_
shellpython -m venv venv source venv/bin/activate pip install -r requirements/local.txt pip install -e .
使用Python在开发模式下运行_pman_
shellpython -m pman
https://github.com/FNNDSC/pman/wiki/Development-Environment:-Kubernetes
_pman_通过环境变量进行配置。有关其确切工作方式,请参阅pman/config.py中的源代码。
_pman_依赖_pfcon_在称为"storeBase"的目录中管理数据。"storeBase"是集群中每个节点都可见的存储空间。
对于使用Docker和Podman的单机部署,最佳解决方案是使用由_pfcon_挂载在/var/local/storeBase的本地卷。_pman_应配置为STORAGE_TYPE=docker_local_volume VOLUME_NAME=...。
在Kubernetes上,应使用单个PersistentVolumeClaim。它由_pfcon_挂载在/var/local/storeBase。_pman_应配置为STORAGE_TYPE=kubernetes_pvc VOLUME_NAME=...。
SLURM没有卷的概念,但SLURM集群通常使用在每个节点上相同路径挂载的NFS共享。_pman_应配置为STORAGE_TYPE=host STOREBASE=...,将共享挂载点指定为STOREBASE。
swarm 与 docker 的比较
最初,_pman_与Docker Swarm API交互是为了支持多节点集群。然而,_pman_通常在单机上运行。开发环境、单机生产部署的CUBE的"主机"计算资源以及Power9超级计算机上的CUBE生产部署都是这种情况。Swarm模式主要是一种麻烦,其多节点能力测试不足。此外,多节点功能更好地由CONTAINER_ENV=kubernetes提供。
在_pman_ v4.1中,CONTAINER_ENV=docker作为新功能引入并成为默认配置。在此模式下,_pman_使用Docker Engine API而不是Swarm API,这对于单机用例更加方便。
CONTAINER_ENV=docker与Podman兼容。
已知Podman版本3或4可以工作。
无根Podman
配置用户能够设置资源限制。
https://github.com/containers/podman/blob/main/troubleshooting.md#symptom-23
| 环境变量 | 描述 |
|---|---|
SECRET_KEY | https://flask.palletsprojects.com/en/2.1.x/config/#SECRET_KEY |
CONTAINER_ENV | 以下之一: "swarm", "kubernetes", "cromwell", "docker" |
STORAGE_TYPE | 以下之一: "host", "docker_local_volume", "kubernetes_pvc" |
STOREBASE | 作业数据存储位置,当STORAGE_TYPE=host时有效,与VOLUME_NAME冲突 |
VOLUME_NAME | 数据卷名称,当STORAGE_TYPE=docker_local_volume或STORAGE_TYPE=kubernetes_pvc时有效 |
PFCON_SELECTOR | pfcon容器上的标签,可指定让pman自动发现VOLUME_NAME(默认: org.chrisproject.role=pfcon) |
CONTAINER_USER | 以UID:GID格式设置作业容器用户,可以是随机值范围 |
ENABLE_HOME_WORKAROUND | 如果设置为"yes",则设置作业环境变量HOME=/tmp |
SHM_SIZE | /dev/shm的大小(以mebibytes为单位)。(仅在Docker、Podman和Kubernetes中支持。) |
JOB_LABELS | CSV列表的key=value对,应用于容器作业的标签 |
JOB_LOGS_TAIL | (int) 作业日志的最大大小 |
IGNORE_LIMITS | 如果设置为"yes",则不对容器作业设置资源限制(用于不费力地使事情工作) |
REMOVE_JOBS | 如果设置为"no",则pman不会删除作业(用于调试) |
STOREAGE_TYPE=host当STORAGE_TYPE=host时,将STOREBASE指定为主机上的挂载点路径。
STOREAGE_TYPE=docker_local_volume对于单机实例,使用Docker/Podman本地卷作为"storeBase"。卷应在_pman_启动之前存在。可以通过以下两种方式之一识别它:
VOLUME_NAMEorg.chrisproject.role=pfcon的容器,并选择绑定到/var/local/storeBase的挂载点STORAGE_TYPE=kubernetes_pvc
当STORAGE_TYPE=kubernetes_pvc时,VOLUME_NAME必须是配置为ReadWriteMany的PersistentVolumeClaim的名称。
在卷仅对特定UNIX用户可写的情况下(例如NFS支持的卷),CONTAINER_USER可用作解决方法。
当CONTAINER_ENV=kubernetes时适用
| 环境变量 | 描述 |
|---|---|
JOB_NAMESPACE | 创建作业的Kubernetes命名空间 |
NODE_SELECTOR | Pod的nodeSelector |
当CONTAINER_ENV=cromwell时适用
| 环境变量 | 描述 |
|---|---|
CROMWELL_URL | Cromwell URL |
TIMELIMIT_MINUTES | SLURM作业时间限制 |
有关其工作原理,请参见https://github.com/FNNDSC/pman/wiki/Cromwell
设置任意容器用户(例如CONTAINER_USER=123456:123456)可提高安全性,但会导致(不安全编写的)_ChRIS_插件失败。在某些情况下,ENABLE_HOME_WORKAROUND=yes可以使插件工作而无需更改其代码。
可以使用随机容器用户CONTAINER_USER=1000000000-2147483647:1000000000-2147483647,但考虑到pfcon的UID永远不会更改,这将导致一切中断。
_pman_的配置多年来变得混乱,因为它试图提供跨截然不同系统的接口。某些选项的混合搭配不受支持:
IGNORE_LIMITS=yes仅适用于CONTAINER_ENV=docker(或podman)。JOB_LABELS=...仅适用于CONTAINER_ENV=docker(或podman)和CONTAINER_ENV=kubernetes。CONTAINER_USER不适用于CONTAINER_ENV=cromwellCONTAINER_ENV=cromwell不转发环境变量。STORAGE_TYPE=host不支持Kubernetes您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务