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.ioquay.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/超算上运行。

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

相关推荐
寄存器漫游者21 分钟前
Linux 软件编程 - IO 编程
linux·运维·spring
charlotte1024102424 分钟前
高并发:关于在等待学校教务系统选课时的碎碎念
java·运维·网络
gaize121340 分钟前
Moltbot(Clawdbot) 专属轻量服务器
运维·服务器
鸽芷咕2 小时前
DrissionPage 成 CANN 仓库爆款自动化工具:背后原因何在?
运维·python·自动化·cann
池央2 小时前
CANN 算子生态的深度演进:稀疏计算支持与 PyPTO 范式的抽象层级
运维·人工智能·信号处理
OJAC1112 小时前
当所有人都在说“运维稳了”,近屿智能看到了另一种可能
运维
人鱼传说2 小时前
docker desktop是一个好东西
运维·docker·容器
阿梦Anmory3 小时前
Ubuntu配置代理最详细教程
linux·运维·ubuntu
呉師傅3 小时前
【使用技巧】Adobe Photoshop 2024调整缩放与布局125%后出现点菜单项漂移问题的简单处理
运维·服务器·windows·adobe·电脑·photoshop
heartbeat..3 小时前
JVM 性能调优流程实战:从开发规范到生产应急排查
java·运维·jvm·性能优化·设计规范