容器(Docker & Singularity)使用入门

sql注入详解 目录前言? ?一、漏洞原因分析二、漏洞危害三、sql注入防范四、如何挖掘sql注入漏洞五、常见的注入手法联合查询(union注入)报错注入基于布尔的盲注基于时间的盲注HTTP头注入宽字节注入堆叠查询二阶注入六、sql注入getshell的几种方式结构化查询语言(Structured Query Language,缩写:SQL),是一种特殊的编程语言,用于数据库中的标准数据查询语言。SQL注入(SQL Injection)是一种常见的Web安全漏洞,主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没 阅读详情

前言

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

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

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

一、容器通用核心特点

  1. 轻量级:容器直接共享宿主机内核,无需完整系统镜像,对比虚拟机占用资源极低、秒级启动、运行高效。
  2. 强隔离性:依托 Linux cgroups、namespaces 实现环境隔离,多容器独立运行、互不干扰。
  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资料,毕竟实战是检验真理的唯一标准嘛~

img

四、网络安全面试题

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

在这里插入图片描述

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

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

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

img

SQL注入漏洞详解总结大全 SQL注入利用手法详解大全 阅读详情

相关推荐

【网络安全】「漏洞原理」(一)SQL 注入漏洞之概念介绍

SQL 注入(SQL Injection)是一种常见的网络攻击技术,它利用应用程序对用户输入数据的处理不当,向数据库中注入恶意代码,从而达到攻击数据库的目的。通常情况下,应用程序接收用户输入数据,将其作为参数传递给数据库执行 SQL 查询语句。如果应用程序没有正确地过滤和验证用户的输入,攻击者就可以通过构造恶意输入,将 SQL 代码注入到查询语句中,从而执行恶意操作,比如删除、修改或者泄露数据库中的敏感信息。这个查询语句中的OR 1=1将始终返回True。

wuli1024的博客 681

SQL注入详解

针对SQL注入的攻击行为可描述为通过用户可控参数中注入SQL语法,破坏原有SQL结构,达到编写程序意料之外结果的攻击行为。 其成因可归结为以下两个原理叠加造成: 1、程序编写者在处理程序和数据库交互时,使用字符串凭借的方式构造SQL语句。 2、未对用户可控参数进行足够的过滤便将参数内容拼接进入到SQL语句中。 SQL注入的攻击方式分为:报错注入、布尔盲注 、延时注入、堆叠查询、联合查询 、二次注入等等

qq_48904485的博客 2万+

工具篇|一文入门Singularity

关于容器技术,在以往的文章中已介绍过一次。本文重点介绍Singularity的必需技术,以及如何构建一个属于自己的容器,在全文最后,附上一张构建容器的流程图供大家参考。首先以实际应用例子来说,借助于容器技术我们可以实现哪些操作?打包分析管道,使其在您的笔记本电脑、云端和高性能计算 (HPC) 环境中运行,以产生相同的结果。发表论文并包含指向包含您使用的所有数据和软件的容器的链接,以便其他人可以轻松重现您的结果。通过几次击键即可安装并运行需要复杂依赖关系堆栈的应用程序。

Mr_pork的博客 4578

【SQL注入】小白手把手入门SQL注入1-数据库基础

数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。关系型数据库关系型数据库是基于关系模型的数据库系统,使用表格(表)来组织数据。数据以行和列的形式存储在表中,每个表代表一个实体或关系,每一行表示一个数据记录,每一列表示记录的属性。关系型数据库使用结构化查询语言(SQL)进行数据的查询和操作。关系型数据库中表与表之间是有很多复杂的关联关系的常见的关系型数据库有等。非关系型数据库。

开水的博客 5532

Apptainer_Singularity容器原理

Singularity容器技术是劳伦斯伯克利国家实验室开发专门用于高性能计算场景的容器技术(Slurm系统是劳伦斯利弗莫尔国家实验室研发),Singularity完全基于可移植性进行虚拟化,更加轻量级,部署更快,Singularity目前被广泛地各高性能计算中心。后由于Singularity项目加入Linux基金会,改名为Apptainer,以下还是按照原称即Singularity展开介绍。

weixin_43537820的博客 2206

手把手教你学Simulink--双足机器人分数阶PID控制仿真

分数阶PID(Fractional-order PID, FOPID)控制是一种先进的控制策略,它扩展了传统的整数阶PID控制器的概念。FOPID控制器允许积分和微分项的阶次不是严格的整数,而是可以是任意实数,这为系统提供了更多的设计自由度,并可能带来更好的性能。在双足机器人控制中,分数阶PID控制可以用于改善机器人的平衡控制、轨迹跟踪等任务的性能。下面我们将详细介绍如何使用Simulink进行基于分数阶PID控制方法的双足机器人仿真研究。

MHD0815的博客 884

Singularity(三)| 将docker转化为singularity容器

如果准备使用的 Docker 镜像已经上传到 Docker Hub (https://hub.docker.com/) 或 Quay (https://quay.io/) 等 Docker 托管存储库中,我们可以直接下载并将其转化为 Docker 容器。然而,在测试和调试期间,我们一般会需要一个可改写的沙箱(sandbox)格式(实际上就是一个目录)。对于想移植到其它主机上的 Docker 镜像,例如,biobakery/lefse,镜像ID为 c6ab05d10f7f,使用。

long_1998的博客 2417

【SPSS实战】手动实现Quade非参数协方差分析:从数据准备到结果解读

本文详细介绍了在SPSS中手动实现Quade非参数协方差分析的全过程。针对数据不满足正态性和方差齐性假设时,如何通过秩转换、回归调整残差,并最终利用Kruskal-Wallis检验完成组间比较。该方法为处理含协变量的非参数多组比较问题提供了清晰的实战解决方案,并探讨了其与标准Quade检验的异同及适用场景。

weixin_29306317的博客 358

Singularity实践教程 + Docker 转 Singularity 的避坑指南

因研究需要,复现某论文,使用的是某校的服务器集群。他们服务器使用的容器是Singularity,而之前自己在院里用的时docker。docker学了没多久,就开始Singularity。恰恰是会一点docker,所以在转用singularity的过程中,踩的坑比较多(造孽啊)。记录一下,前事不忘,后世之师.........

Qy_sfsh的博客 1万+

Tomcat源码:Acceptor与Poller、PollerEvent

前文中我们介绍到NioEndpoint的start方法启动了Acceptor与Poller这两个异步线程来处理连接请求,本文我们就来接着介绍这两个组件。目录前言一、Acceptor1、构造方法2、run方法LimitLatchNioChannel二、Poller与PollerEvent2、pollerregisterruneventsprocessKey。

CRUD工程师 2066

core_analyzer分析c++程序内存占用

环境:centos; 进程:单进程多线程c++程序; 问题:1. 分析系统内存占用; 2. 分析ptmalloc内存空洞(bins上的空闲chunk的大小); 包括:1. 占用了很大内存的c++进程; 2. gcore(在进程不core dump的情况下生成core文件); 3. core_analyzer(分析gcor...

weixin_41644391的博客 4812

Singularity 容器安装与使用

singularity 安装与应用

ZhrSyd的博客 2309

保姆级教程:在Windows 10上为QT5.15.2配置Android开发环境(含SDK/NDK/JDK避坑指南)

本文提供了一份详细的Windows 10环境下为QT5.15.2配置Android开发环境的保姆级教程,涵盖SDK、NDK、JDK的安装与配置,以及常见问题的避坑指南。通过优化安装流程、解决Gradle下载慢等痛点,帮助开发者快速搭建稳定的编译环境,并提供了模拟器配置和调试技巧,确保开发效率。

weixin_30919571的博客 528

Docker镜像转Singularity镜像的全过程

原本Docker镜像挺好用的,但是最近做项目需要用到超算的集群,Docker无法在上面用,需要将Docker镜像转为singularity镜像 这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流.

EE呈双的博客 7522

《湖科大教书匠计算机网络》学习笔记总目录+思维导图

本篇文章是对《湖科大教书匠计算机网络》所有知识点的笔记总结归档和计算机网络的思维导图

weixin_73077810的博客 8257

基于Qt C++开发一套大疆农业无人机的AI飞控系统

如果需要补充**多机协同作业代码**、**农田测绘数据导出**、**作业数据统计大屏**或**移动端地面站适配**功能,可以告知具体需求,我会针对性完善。"开启" : "关闭") << "喷洒,流量:" << flowRate << "L/min";emit errorOccurred(QString("SDK初始化失败,错误码:%1").arg((int)ret));report += QString("问题区域数量:%1\n").arg(info.problemAreas.size());

寒寒豆豆软件公司的博客 386

浅谈Singularity容器

1.容器简介 简而言之,容器是系统环境的封装。通常,容器技术被设计为解决企业的单一主要实例:微服务虚拟化。 Docker是最广为人知和使用最多的容器平台主要为网络微服务虚拟化而设计, 方便创建、维护和分发容器图像;容器是可以再生的;易于安装、记录完善、标准化。由于这些优势,Docker得到了广泛的使用 。它对当地和私人资源非常有用。你可以使用Docker-hub 来开发和分享你 的作品。如果您需要扩展到本地资源之外,这可能是一条死路!Docker 和其他以企业为中 心的容器不是为传统 H...

小男孩儿的博客 7429

基于C++和Basler SDK的相机开发详解

Basler相机是德国Basler公司生产的高性能工业相机,具有高分辨率、高帧率和低噪声的特点。Basler相机广泛应用于机器视觉、工业自动化、医疗影像和安防监控等领域。高分辨率和高帧率:能够捕捉清晰、细腻的图像。多种接口:支持USB、GigE、Camera Link等多种接口,方便不同应用场景的需求。丰富的配置选项:支持多种图像格式、分辨率和帧率的配置,适应不同的应用需求。本文详细介绍了如何基于C++和Basler SDK进行相机开发,涵盖了从环境搭建、相机连接、图像采集到图像处理的完整过程。

qq_38334677的博客 2100

扫盲|容器技术Docker和Singularity

什么是容器容器(container)可以简单的理解成自己配置的系统环境,有你所需的package和dependencies。它可以允许你在笔记本、云服务器和HPC环境中运行你的程序。为什么...

lazysnake666的博客 3538

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: 逆向工程: 将docker镜像”反编译”为Dockerfile
下一篇: 靶场攻略 | 记一次实验靶场练习笔记
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值