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

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

相关推荐
Archy_Wang_110 小时前
LVS+KeepAlived+Nginx实现企业级业务高可靠部署的实战教程
运维·nginx·lvs
张文君12 小时前
docker使用代理拉取镜像
运维·docker·容器
2401_8346369912 小时前
保姆级 Kubernetes 部署教程|从原理到三节点集群落地
云原生·容器·kubernetes
陌路2013 小时前
Docker教程从入门到精通(0基础)
运维·docker·容器
Tongzhi202613 小时前
从部署到运维:通芝科技无感考勤一体机的全流程效率解析
运维·数据结构·科技·算法·贪心算法
数据知道14 小时前
宽字节注入、二次注入、堆叠注入:高级 SQLi 专题
linux·运维·安全·网络安全
初级炼丹师(爱说实话版)14 小时前
Ubuntu24.04 Docker+vLLM+qianwen2.5-coder-32B部署文档
docker·容器·vllm
2301_7807896614 小时前
DDoS 攻击溯源:DNS 水印标记 + 区块链存证的双保险
运维·服务器·网络·云原生·ddos
童槿顏丶15 小时前
GitLab部署到Linux
linux·运维·gitlab
小柒儿33617 小时前
从单Agent到多智能体系统:多智能体协作重塑自动化边界
运维·自动化