Files
xuanyuan_docker_proxy/usage/singularity-docker-guide.md
Sean 821d45940d 配置使用手册更新
配置使用手册更新
2026-07-13 00:49:10 +08:00

7.8 KiB
Raw Permalink Blame History

Singularity / Apptainer Docker 镜像源配置教程

在线版:https://xuanyuan.cloud/usage/singularity

适用于 HPC 集群、科学计算环境。推荐专属域名方式(docker://***.xuanyuan.run/...,免登录);亦可使用环境变量登录拉取 docker.io 镜像(不推荐,仅支持 docker.xuanyuan.run)。

目录

1. 关于 Singularity 和 Apptainer

Apptainer 是 Singularity 项目的社区分支,两者功能基本相同,命令也基本兼容。本教程同时适用于 Singularity 和 Apptainer。

请使用以下命令查看版本:

singularity --version

或(如果使用的是 Apptainer):

apptainer --version

2. 安装 Singularity/Apptainer

如果您的系统尚未安装 Singularity 或 Apptainer,可以使用以下方法安装:

Ubuntu/Debian(推荐使用 Apptainer):

sudo add-apt-repository ppa:apptainer/ppa -y
sudo apt update
sudo apt install -y apptainer

CentOS/RHEL:

sudo yum install -y epel-release
sudo yum install -y singularity

从源码编译安装:

# 从源码编译安装(适用于高级用户)
# 参考官方文档:https://apptainer.org/docs/admin/main/installation.html

提示:更多安装方法请参考官方文档:Apptainer 安装文档 或 Singularity 安装文档

3. 专属域名方式(推荐)

若您已分配专属域名,此方式无需设置环境变量,直接在 docker:// 地址中指定专属域名即可,比环境变量登录更简单。

基本用法:

singularity pull myapp.sif docker://***.xuanyuan.run/library/nginx:alpine

或使用 Apptainer 命令:

apptainer pull myapp.sif docker://***.xuanyuan.run/library/nginx:alpine

重要提示:请将命令中的 *** 替换为您的专属域名前缀。例如,如果您的专属域名为 123abc.xuanyuan.run,则应将 *** 替换为 123abc。

多仓库镜像拉取示例:

# Docker Hub 镜像
singularity pull nginx.sif docker://***.xuanyuan.run/library/nginx:alpine

# GitHub Container Registry 镜像
singularity pull ghcr.sif docker://***-ghcr.xuanyuan.run/namespace/image:tag

# Google Container Registry 镜像
singularity pull gcr.sif docker://***-gcr.xuanyuan.run/project/image:tag

# Quay.io 镜像
singularity pull quay.sif docker://***-quay.xuanyuan.run/namespace/image:tag

# Kubernetes Registry 镜像
singularity pull k8s.sif docker://***-k8s.xuanyuan.run/namespace/image:tag

优势:无需设置环境变量或登录凭据,直接在命令中指定专属域名即可。适合无 shell 登录需求、批量脚本、多 registry 后缀(GHCR、GCR 等)场景。

4. 环境变量登录方式(不推荐,仅支持 docker.io)

若您尚未分配专属域名,可在 HPC 作业脚本中通过环境变量向 Singularity/Apptainer 传递凭据,拉取 docker://docker.xuanyuan.run/...(docker.io)镜像。此方式不推荐,且不支持 GHCR、GCR 等其他 registry,请优先使用上方专属域名方式。

在本站完成注册并充值流量包后,在个人中心「镜像仓库信息」中获取镜像账户和镜像密码。

1. 设置环境变量(推荐 SingularityCE 变量名):

export SINGULARITY_DOCKER_USERNAME=镜像账户
export SINGULARITY_DOCKER_PASSWORD=镜像密码

2. 拉取镜像:

singularity pull test.sif docker://docker.xuanyuan.run/library/nginx:latest

或使用 Apptainer 命令:

apptainer pull test1.sif docker://docker.xuanyuan.run/library/redis:latest

Apptainer 兼容变量名:

# 使用 Apptainer 时也可改用以下变量名(可消除兼容提示)
export APPTAINER_DOCKER_USERNAME=镜像账户
export APPTAINER_DOCKER_PASSWORD=镜像密码

提示:镜像账户和镜像密码可在登录后,在左侧菜单栏「个人中心」→「用户信息」→「镜像仓库信息」中查看。

注意:**不支持 docker login:**Singularity/Apptainer 不会自动读取 ~/.docker/config.json 中的 Docker 凭据,请勿照搬 Docker CLI 的 docker login 流程。

变量名提示:若使用 Apptainer 且已设置 SINGULARITY_DOCKER_*,可能出现 SINGULARITY_DOCKER_* is set, but APPTAINER_DOCKER_* is preferred 提示,Apptainer 仍会使用已设置的凭据,可忽略;若希望消除提示,可改用 APPTAINER_DOCKER_USERNAME/PASSWORD。

**安全提示:**环境变量会出现在进程列表中,HPC 共享节点请谨慎使用;脚本场景可在拉取完成后执行 unset SINGULARITY_DOCKER_USERNAME SINGULARITY_DOCKER_PASSWORD,或仅在作业脚本内设置。

**适用范围:**仅支持 docker.xuanyuan.run(docker.io);其他 registry 请使用上方专属域名后缀方式。

5. 验证配置是否生效

拉取镜像后,可以通过以下方式验证配置是否生效:

  • 观察拉取速度,如果明显快于直接拉取官方源,说明配置生效
  • 检查镜像文件是否成功下载到本地(ls -lh test.sif)
  • 专属域名方式:在网络抓包工具中查看是否访问了您的专属域名
  • 环境变量登录(docker.io):确认未出现 UNAUTHORIZED 或 402 错误

专属域名示例:

singularity pull test.sif docker://***.xuanyuan.run/library/alpine:latest

环境变量登录示例(docker.io):

singularity pull test.sif docker://docker.xuanyuan.run/library/nginx:latest

拉取成功后,可以使用 ls -lh test.sif 查看镜像文件。

6. 常见问题

问题描述 可能原因 解决方法
镜像拉取失败 专属域名拼写错误;专属域名没有流量;镜像账户或密码错误(环境变量登录);镜像路径不正确;网络连接问题 检查命令中的域名是否正确,确保将 *** 替换为您的专属域名前缀;前往充值页面充值流量包;确认镜像路径格式正确,例如:docker://***.xuanyuan.run/library/nginx:alpine;检查网络连接和防火墙设置
拉取速度没有提升 仍在使用官方源地址;专属域名配置错误;网络环境限制 确认命令中使用的是专属域名(***.xuanyuan.run),而不是官方源地址;检查域名配置是否正确;使用网络抓包工具验证实际访问的地址
设置了 docker login 仍拉取失败 Singularity/Apptainer 不读取 Docker 凭据 改用 SINGULARITY_DOCKER_USERNAME/PASSWORD 环境变量;或使用专属域名方式(步骤 3)
出现 SINGULARITY_DOCKER_* is set, but APPTAINER_* is preferred Apptainer 仍识别 SingularityCE 变量名 非错误,Apptainer 仍会使用 SINGULARITY_DOCKER_* 凭据;可忽略,或改用 APPTAINER_DOCKER_* 消除提示
环境变量登录后 402 / UNAUTHORIZED 流量耗尽;镜像账户或密码错误 前往充值页面充值流量包;核对个人中心「镜像仓库信息」中的账户密码;参考 Docker 登录 UNAUTHORIZED 排查
命令不存在 未安装 Singularity 或 Apptainer 参考步骤 2 安装 Singularity 或 Apptainer