news 2026/9/23 9:36:19

容器(Docker Singularity)使用入门

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
容器(Docker Singularity)使用入门

前言

在生物信息学(生信)研究领域,数据处理和分析任务日益复杂,对计算资源的需求也越来越高。为了提高研究效率、确保环境一致性和可重复性,容器技术应运而生。Docker 和 Singularity 作为两种主流的容器解决方案,在生信领域得到了广泛应用。

本文将通俗易懂讲解两种容器的核心概念、特点、安装方式、常用命令,同时详解Docker 转 Singularity 镜像全套实操方法。在各类软件源码安装报错、依赖冲突、环境配置繁琐的场景下,容器部署是最优解。

容器是一种轻量级的虚拟化技术,它允许在单个操作系统实例上运行多个隔离的应用程序。容器将应用程序及其所有依赖项(库、配置文件、运行环境等)打包成独立运行单元,实现一次打包、随处运行,彻底解决环境不一致、依赖报错、版本冲突等问题。

一、容器通用核心特点

  1. 轻量级:容器直接共享宿主机内核,无需完整系统镜像,对比虚拟机占用资源极低、秒级启动、运行高效。
  2. 强隔离性:依托 Linuxcgroupsnamespaces实现环境隔离,多容器独立运行、互不干扰。
  3. 高可移植性:镜像打包完整依赖,可在服务器、集群、云平台无缝迁移部署。
  4. 灵活可扩展:支持批量启停、动态扩容,适配大规模数据处理任务。
  5. 精准资源控制:可单独限制单容器 CPU、内存、磁盘资源,保障系统稳定性。
  6. 环境一致性:镜像固化运行环境,规避 “本地能跑、服务器报错” 的经典问题。

二、Docker 容器详解

Docker 是目前最主流的通用容器技术,2013 年正式推出,广泛用于开发测试、微服务、自动化部署。但不适合传统高性能计算集群,存在 Root 权限风险、集群适配性差等问题。

1. Docker 四大核心组件

  • 镜像(Image):只读环境模板,包含程序、依赖、配置,是创建容器的基础。
  • 容器(Container):镜像的运行实例,可启停、删除、迭代运行。
  • 仓库(Registry):镜像存储分发平台,默认公共仓库为 Docker Hub,也可自建私有仓库。
  • 引擎(Engine):Docker 核心服务,负责镜像构建、容器调度、资源管理。

2. Docker 安装教程

Ubuntu 系统
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io
CentOS 系统
sudo yum install -y docker sudo systemctl start docker sudo systemctl enable docker
Windows / macOS

直接下载安装Docker Desktop即可,适配桌面端可视化操作。

3. 安装验证

docker --version

4. 核心常用命令

# 拉取官方镜像 docker pull ubuntu:latest # 查看本地所有镜像 docker images # 交互式运行容器 docker run -it --name my_ubuntu ubuntu:latest /bin/bash # 查看正在运行的容器 docker ps # 查看所有容器(含已停止) docker ps -a # 停止容器 docker stop my_ubuntu # 删除容器 docker rm my_ubuntu # 删除镜像 docker rmi ubuntu:latest

参数说明:

  • -i:持续开启标准输入
  • -t:分配伪终端,支持交互式操作
  • --name:自定义容器名称
  • 查看运行中的容器

5. Dockerfile 自定义镜像

Dockerfile 用于自动化构建专属镜像,统一部署环境,示例模板如下:

# 基础镜像 FROM ubuntu:latest # 安装依赖 RUN apt-get update && apt-get install -y \ python3 \ python3-pip \ && rm -rf /var/lib/apt/lists/* # 设置工作目录 WORKDIR /app # 拷贝本地文件到容器 COPY . /app # 安装项目依赖 RUN pip3 install --no-cache-dir -r requirements.txt # 暴露端口 EXPOSE 5000 # 容器启动命令 CMD ["python3", "app.py"]

6. 构建并运行自定义镜像

# 构建镜像 docker build -t my_python_app . # 后台运行容器并映射端口 docker run -d -p 5000:5000 --name my_running_app my_python_app

参数说明:

  • -t:指定镜像名称与标签
  • .:指定Dockerfile所在的路径。
  • -d:后台守护进程运行
  • -p:宿主机端口与容器端口映射

三、Singularity 容器详解

Singularity 是专为高性能计算 HPC、科学计算、生信集群设计的容器技术,完美弥补 Docker 在集群环境的缺陷,是实验室、超算中心的主流选择。

核心优势:无 Root 权限运行、安全性高、集群适配性强、资源占用低,绝大多数科研集群禁止 Docker,但兼容 Singularity。

Singularity 使用SIF专属镜像格式,可打包完整运行环境,跨集群、跨平台无缝运行。

1. Singularity 安装

Ubuntu
sudo apt-get update && sudo apt-get install -y singularity-container
CentOS
sudo dnf install -y singularity

2. 基础常用命令

# 从Docker仓库拉取镜像 singularity pull docker://ubuntu:latest # 运行容器 singularity run ubuntu_latest.sif # 进入交互式终端 singularity shell ubuntu_latest.sif # 查看容器详细信息 singularity inspect ubuntu_latest.sif

四、Docker 与 Singularity 核心区别

1. 设计定位

  • Docker:面向开发、微服务、CI/CD 部署,侧重灵活部署、快速迭代。
  • Singularity:面向科学计算、HPC 集群、大数据分析,侧重安全、稳定、集群兼容。

2. 安全性

  • Docker:默认 Root 权限运行,多用户集群存在安全风险,权限管控复杂。
  • Singularity:默认普通用户权限运行,无高危权限泄露,适配共享集群环境。

3. 资源与场景

  • Docker:资源配置灵活,适合业务服务、项目部署,不适合超算集群。
  • Singularity:自动化资源调度,适配大规模并行计算、生信分析、科研任务。

4. 可移植性

  • Docker:跨平台通用,但 HPC 集群兼容性差。
  • Singularity:科研平台、超算中心通用,可无缝迁移。

五、Docker 镜像转为 Singularity 镜像(三种实操方法)

科研集群大多仅支持 Singularity,因此 Docker 镜像转 Singularity 是科研必备技能。

方法一:本地 Docker 镜像打包转换

  1. 查看本地 Docker 镜像 ID
docker images
  1. 打包镜像为 tar 文件
docker save 镜像ID -o 自定义镜像名.tar
  1. 将 tar 文件传输至 Singularity 服务器
  2. 构建 Singularity 沙箱镜像
singularity build --sandbox 新镜像名 docker-archive://tar包路径
  1. 进入容器运行
singularity shell 新镜像名

方法二:直接从 Docker 仓库拉取转换

无需本地 Docker 环境,直接拉取公共镜像构建:

# 从Docker Hub构建 singularity build 镜像名.sif docker://godlovedc/lolcow # 从生信专属仓库Quay构建 singularity build samtools.sif docker://quay.io/biocontainers/samtools:1.17--hd87286a_1

方法三:通过 Dockerfile 直接构建(Singularity4.1 + 支持)

  1. 编写自定义 Dockerfile
  2. 执行构建命令
singularity build --oci 自定义镜像.oci.sif Dockerfile
  1. 运行镜像
singularity run 自定义镜像.oci.sif

六、实操总结与避坑指南

  1. 场景选择
    日常开发、本地调试、服务部署优先用 Docker;实验室集群、生信分析、超算任务优先用 Singularity。
  2. 环境适配
    遇到软件源码编译报错、依赖冲突、系统版本不兼容时,优先使用容器部署,一劳永逸。
  3. 转换避坑
    • 镜像转换过程保证网络稳定,避免镜像损坏;
    • 集群环境禁止使用 Docker Root 权限运行,避免违规告警;
    • 转换后的 Singularity 镜像建议测试运行,校验依赖完整性。
  4. 核心价值
    容器技术彻底解决了科研数据分析中的环境不一致、依赖繁杂、部署失败三大痛点,是生信、HPC、大数据领域研究者的必备基础技能。

结语

Docker 灵活通用,适合开发部署;Singularity 安全稳定,适配科研集群。熟练掌握两种容器的使用与互相转换,可以适配本地开发 + 集群运算的全流程工作,大幅提升科研与开发效率,规避 90% 以上的环境配置问题。


如何系统学习网络安全?

网络安全作为数字时代的核心技术基石,已成为保障各行业安全稳定运行的坚实屏障。筑牢网络安全的防线,掌握先进的防护策略和技能正上升为国家与企业发展的战略优先级。

构建稳固的网络安全能力是一个体系的工程,需要从夯实基础理论出发,持续深化到攻防对抗与应急响应的实战层面。

如果你是准备学习网络安全(黑客)或者正在学习,我可以把我自用的360独家内部资料分享给你,包含以下内容你应该能用得上:

①网络安全学习路线
②20份渗透测试电子书
③安全攻防357页笔记
④50份安全攻防面试指南
⑤安全红队渗透工具包
⑥网络安全必备书籍
⑦100个漏洞实战案例
⑧安全大厂内部视频资源
⑨历年CTF夺旗赛题解析

一、网络安全(黑客)学习路线

网络安全(黑客)学习路线,形成网络安全领域所有的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、网络安全教程视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

三、网络安全CTF实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这里带来的是CTF&SRC资料&HW资料,毕竟实战是检验真理的唯一标准嘛~

四、网络安全面试题

最后,我们所有的作为都是为就业服务的,所以关键的临门一脚就是咱们的面试题内容,所以面试题板块是咱们不可或缺的部分,这里我给大家准备的就是我在面试期间准备的资料。

网安其实不难,难的是坚持和相信自己,我的经验是既然已经选定网安你就要相信它,相信它能成为你日后进阶的高效渠道,这样自己才会更有信念去学习,才能在碰到困难的时候坚持下去。

机会属于有准备的人,这是一个实力的时代。人和人之间的差距不在于智商,而在于如何利用业余时间,只要你想学习,什么时候开始都不晚,不要担心这担心那,你只需努力,剩下的交给时间!

这份完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/23 9:36:18

暗黑3怎么刷装备源码深度剖析:保姆级教程教你写出可维护逻辑

暗黑3怎么刷装备源码深度剖析:保姆级教程教你写出可维护逻辑 是不是看了一堆教程,对着屏幕发呆,还是不会把逻辑串起来?别急,今天这篇 保姆级教程 不玩虚的,直接带你拆解“暗黑3怎么刷装备”背后的核心代码逻辑。我们不看那些花里胡哨的特效,只盯着 数据流转 和 状态管理…

作者头像 李华
网站建设 2026/9/23 9:36:14

搞懂同声传译工资背后的技术逻辑:避坑指南

搞懂同声传译工资背后的技术逻辑:避坑指南 很多刚入行的开发者,包括转行过来的朋友,都卡在一个地方:语法背得滚瓜烂熟,LeetCode 也能刷几道,但一旦让你搭个完整项目,脑子就一片空白。就像你看同声传译员在联合国现场飞流直下,觉得那是天赋,其实那是背后严密的信号处理架构在支撑。如果你想知道…

作者头像 李华
网站建设 2026/9/23 9:36:02

从入门到精通:no3b手写实现与面试避坑指南

从入门到精通:no3b手写实现与面试避坑指南 学会语法却不知怎么搭项目,这是大多数开发者在no3b入门阶段的真实写照。很多人以为背下几个API就能上岗,结果一遇到实际业务场景就卡壳,更别提应对大厂面试官的连环追问。no3b作为高频技术栈,从入门到精通的路径并非线性的语法堆砌,而是对底层逻辑、工程化思…

作者头像 李华
网站建设 2026/9/23 9:35:59

Java SSM电影订票系统实战:从环境搭建到并发锁座全流程

简介:本资源是一套基于SSM框架(SpringSpringMVCMyBatis)开发的完整Java电影购票系统,面向Java Web初学者与课程设计实践者,解决影院线上订票场景下的前后端协同开发、数据库建模与权限分层管理等典型问题。压缩包共84个…

作者头像 李华
网站建设 2026/9/23 9:35:52

3步搞懂芯片烧录器底层逻辑保姆级教程

3步搞懂芯片烧录器底层逻辑保姆级教程 官方文档动辄几百页,翻开全是寄存器定义和时序图,根本抓不住重点。别慌,这篇保姆级教程不整虚的,直接带你拆解芯片烧录器的核心逻辑。我们跳过那些晦涩难懂的协议细节,用大白话把“怎么把代码写进芯片”这件事讲透。 一句话原理:它是数据的“搬运工”与“翻译官”…

作者头像 李华