Docker 与 Singularity 镜像实战指南

一、 镜像查找:上哪儿找"正版"生信工具?

生信领域有专门的"应用商店",不要只在 Docker Hub 瞎撞。

  1. Quay.io (Biocontainers):

    • 地位:生信镜像的"金标准"。几乎所有 Conda 能装的软件,在这里都有对应的镜像。

    • 网址 :quay.io/search

    • 技巧 :搜索后进入 Tags 标签页。Biocontainers 镜像没有 latest 标签,必须复制那一串带哈希值的长标签(如 2.1.0--hdfd78af_0)。

  2. Bioconda 官网:

    • 网址 :bioconda.github.io

    • 技巧:搜索软件名,页面下方会直接给出该软件对应的 Quay.io 镜像拉取命令。

  3. Docker Hub:

    • 网址 :hub.docker.com

    • 地位 :找官方大厂工具(如 broadinstitute/gatk, nvidia/cuda)。

  4. nf-core Modules:

    • 网址 :nf-core/pipelines

    • 地位:如果你想跑 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/超算上运行。

  • 核心建议 :永远在镜像名和文件名中保留版本号。

相关推荐
闪亮的路灯7 小时前
Linux 安装mqtt服务mosquitto
linux·运维·服务器
szxinmai主板定制专家10 小时前
X86 工控机 vs RK3588 异构主控:AMR 控制器 BOM、散热、长期运维对比
运维·stm32·单片机·嵌入式硬件·fpga开发·am62x
叼烟扛炮10 小时前
Linux 学习笔记(四十一):TCP 并发演进——从单进程到多线程服务器
linux·运维·服务器·网络·笔记·学习·tcp/ip
Decay__11 小时前
09_MySQL 闪回与时间点恢复 —— binlog 回放、mysqlbinlog、PITR 与误删恢复
运维·数据库·sql·mysql·架构
久曲健的测试窝11 小时前
2026软件测试工具选型指南:双模式如何化解UI脚本维护难题
运维·人工智能·科技·aigc
DarkAthena11 小时前
wslc ps 卡死的排查:一次「停容器不停 VM」引发的连环故障
docker
NailiConveyor12 小时前
柔性物流方案如何适配工厂升级?自动化输送流水线定制要点
大数据·运维·自动化·制造·业界资讯
小沈同学呀12 小时前
【Agent开发第十五期】部署上线:把 Alex 搬进浏览器,15 期全栈串联收官
docker·agent·从零搭建ai助手
Lsetea13 小时前
Certbot webroot申请SSL证书总是404:Nginx挑战目录与路径映射检查
运维·nginx·https·ssl证书·certbot
如若12313 小时前
Windows SSH + Headscale/Tailscale 组网及免密登录完整配置教程
运维·windows·ubuntu·ssh·内网穿透