惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
Cisco Talos Blog
Cisco Talos Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
V2EX
博客园 - 三生石上(FineUI控件)
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
D
Docker
S
SegmentFault 最新的问题
博客园 - 聂微东
美团技术团队
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
M
MIT News - Artificial intelligence
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The GitHub Blog
The GitHub Blog
GbyAI
GbyAI
L
LangChain Blog
Vercel News
Vercel News
博客园 - 叶小钗
MongoDB | Blog
MongoDB | Blog
Stack Overflow Blog
Stack Overflow Blog
H
Help Net Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
Engineering at Meta
Engineering at Meta
T
Threat Research - Cisco Blogs
T
Threatpost
Scott Helme
Scott Helme
T
Tailwind CSS Blog
Latest news
Latest news
Stack Overflow Blog
Stack Overflow Blog
Blog — PlanetScale
Blog — PlanetScale
The Register - Security
The Register - Security
罗磊的独立博客
P
Proofpoint News Feed
腾讯CDC
S
Schneier on Security
雷峰网
雷峰网
A
About on SuperTechFans
T
Tenable Blog
F
Full Disclosure
Cyberwarzone
Cyberwarzone
博客园_首页
有赞技术团队
有赞技术团队
K
Kaspersky official blog

Yorksite

Plog004:好吃好吃 · Plog Plog003:Until Then · Plog Plog002:春天花会开 · Plog Plog001:让人疲惫的AI与在战锤世界中仰泳,赞美欧姆尼赛亚? · Plog rhaeTree:一个基于 Rust 的进化树可视化编辑工具 · Articles 我的键盘快捷键们 · Articles 迟到的2025年度数码产品总结 · Articles 关于我和这个博客 · Info 买了一只十多年前的老 Pebble · Articles 盘点一下今年让我上头的那些游戏 · Articles 【吃了啥】新利查西菜馆 根据Zotero数据库追踪新发表文献 又是一个Mac软件列表 Vita3K存档转移到PSV实机
解决远程服务器上Singularity联网问题 · Articles
2025-10-15 · via Yorksite

这几天遇到个项目,需要在服务器上用到 Nextflow 流程运行一个Singularity镜像(singleron-RD/wf-single-cell)虽然服务器能联网,但因为某些众所周知的原因,Singularity(或 Apptainer)完全无法从 DockerHub 直接拉取所需镜像。倒腾了一下午,试了各种办法,终于搞定了,这里记录下最终可行的解决方案。

背景

在服务器上运行某Nextflow流程时,需要从以下两个镜像拉取容器:

  • docker://ontresearch/wf-single-cell:sha0fcdf10929fbef2d426bb985e16b81153a88c6f4
  • docker://ontresearch/wf-common:sha91cd87900c86f05bf36d8c77b841b8fda5ecf3aa

但由于某些原因,所有 docker 系列的网站直连都打不开,直接拉取失败。

方案一:Mac上下载好镜像包再传给服务器(不可行)

一开始想在 Mac 上直接下载好镜像包,但是发现 M 系列芯片的 Mac 由于架构原因,并不支持直接安装 Singularity 或是 Apptainer。于是尝试在本地通过 Docker 启动一个运行 Apptainer 的环境再进行下载。

docker run -it --privileged \
  -v $PWD:/data \
  ghcr.io/apptainer/apptainer:latest bash
 
cd /data
 
apptainer pull ontresearch-wf-single-cell.sif docker://ontresearch/wf-single-cell:sha0fcdf10929fbef2d426bb985e16b81153a88c6f4
 
apptainer pull ontresearch-wf-common.sif       docker://ontresearch/wf-common:sha91cd87900c86f05bf36d8c77b841b8fda5ecf3aa

然而问题在于,Mac(ARM 架构)上生成的 .sif 文件无法在服务器(x86 架构)上运行,会报出架构不匹配错误,因此此方法虽然能成功获得 sif 文件,但获取的文件在服务器上无法运行。。


方案二:通过 SSH 代理转发使用本地代理下载(可行)

因为不想在服务器上单独配置一套代理,发现可以通过 SSH 反向端口转发,让服务器直接使用 Mac 本地代理,从而顺利下载容器镜像,实现流程如下:

1. 建立 SSH 反向代理通道

假设本地代理端口为 6152,在连接服务器时建立反向映射:

ssh -p 22 -R 1080:127.0.0.1:6152 usr_name@remote_ip -t zsh

连接成功后,服务器可以通过 127.0.0.1:1080 访问外网。

2. 在服务器上设置代理环境变量

export https_proxy=http://127.0.0.1:1080
export http_proxy=http://127.0.0.1:1080

3. 在服务器上准备镜像存放目录

mkdir -p $HOME/containers && cd $HOME/containers

4. 使用 Singularity 拉取镜像

singularity pull ontresearch-wf-single-cell.sif docker://ontresearch/wf-single-cell:sha0fcdf10929fbef2d426bb985e16b81153a88c6f4
singularity pull ontresearch-wf-common.sif       docker://ontresearch/wf-common:sha91cd87900c86f05bf36d8c77b841b8fda5ecf3aa

下载完成后,镜像文件保存在:

$HOME/containers/

5. 在 Nextflow 配置中使用本地 SIF 文件

为了避免 Nextflow 再次联网下载,可在 nextflow.config 中指定本地容器路径:

process {
  withLabel: singlecell {
    container = "$HOME/containers/ontresearch-wf-single-cell.sif"
  }
  withLabel: wf_common {
    container = "$HOME/containers/ontresearch-wf-common.sif"
  }
}

这样 Nextflow 会直接使用本地镜像文件,而不会再尝试从 DockerHub 获取。


五、总结

真是太费劲了!