一、 镜像查找:上哪儿找"正版"生信工具?
生信领域有专门的"应用商店",不要只在 Docker Hub 瞎撞。
-
Quay.io (Biocontainers):
-
地位:生信镜像的"金标准"。几乎所有 Conda 能装的软件,在这里都有对应的镜像。
-
网址 :quay.io/search
-
技巧 :搜索后进入 Tags 标签页。Biocontainers 镜像没有
latest标签,必须复制那一串带哈希值的长标签(如2.1.0--hdfd78af_0)。
-
-
Bioconda 官网:
-
技巧:搜索软件名,页面下方会直接给出该软件对应的 Quay.io 镜像拉取命令。
-
Docker Hub:
-
网址 :hub.docker.com
-
地位 :找官方大厂工具(如
broadinstitute/gatk,nvidia/cuda)。
-
-
nf-core Modules:
-
地位:如果你想跑 sarek 等标准流程,直接在这里看它们官方推荐的镜像版本。
二、 镜像拉取:如何突破网络封锁?
1. Docker 拉取(带国内代理前缀)
由于国内直接拉取 docker.io 或 quay.io 经常超时,建议使用镜像加速前缀。
Bash
# 格式:代理前缀/原始路径:版本号
docker pull m.daocloud.io/biocontainers/fgbio:2.1.0--hdfd78af_0
2. Singularity 拉取(直接生成文件)
Singularity 运行不需要 Root 权限,更适合超算集群。
Bash
# 建议命名时带上版本号,方便复现
singularity pull fgbio_2.1.0.sif docker://quay.io/biocontainers/fgbio:2.1.0--hdfd78af_0
三、 常用操作对比表:Docker vs Singularity
这部分可以做成博客里的核心对比图。
| 操作 | Docker 命令 | Singularity 命令 |
|---|---|---|
| 查看镜像 | docker images |
ls *.sif (就是个普通文件) |
| 运行工具 | docker run --rm -v $PWD:/data 镜像ID fgbio ... |
singularity exec fgbio.sif fgbio ... |
| 进入交互界面 | docker run -it 镜像ID /bin/bash |
singularity shell fgbio.sif |
| 导出/保存 | docker save -o fgbio.tar 镜像ID |
cp fgbio.sif /移动路径 |
| 删除 | docker rmi 镜像ID |
rm fgbio.sif |
导出到 Google 表格
四、 避坑与进阶 Tips (博客的点睛之笔)
1. 为什么 Biocontainers 没有 latest?
- 解释 :生信分析讲究"可重复性"。今天运行的
latest和明年运行的latest如果软件版本变了,结果可能完全不同。因此,Biocontainers 强制要求使用具体版本号。
2. 权限与挂载问题
-
Docker :默认是 root 权限,且容器内外文件系统隔离。必须用
-v将宿主机的目录挂载进去,否则找不到数据。 -
Singularity :默认使用当前登录用户权限,且自动挂载当前目录(PWD)和家目录(HOME)。这在处理 cfDNA 大文件时非常方便。
3. Docker 镜像转 SIF
如果你本地有一个改好的 Docker 镜像想传到服务器用:
Bash
# 将本地 Docker 守护进程里的镜像转为 SIF 文件
singularity build my_tool.sif docker-daemon:my_tool:v1.0
五、 总结与结语
-
Docker:适合个人开发、本地调试、构建新工具。
-
Singularity:适合大规模生信数据分析、在 HPC/超算上运行。
-
核心建议 :永远在镜像名和文件名中保留版本号。