Singularity和Docker区别
PS研究背景需要使用学校的服务器集群。HPC高性能集群服务器使用的容器是Singularity而之前自己常用的是docker。一、docker中的相关概念1、镜像镜像是一个只读的模板包含了运行容器所需的文件系统、应用程序代码、运行时环境、库等。现存有较多镜像文件。2、容器容器是将应用程序、开发软件包、依赖环境等统一打包到容器中将整个容器部署 至其他的平台或者服务器上。PS:容器容器虚拟化就理解成一个虚拟机主机虚拟化。二、singularity的相关概念1、容器(container): 容器是一个包含用户软件和依赖的镜像系统可独立运行某一条或者多条命令。Singularity没有镜像的概念用户创建和运行的都是一个一个容器。2、SIFSingularity Image File压缩后的只读read-only的Singularity镜像文件是生产使用的主要形式。3、Sandbox 可写(writable)的容器存在形式是文件系统中的一个目录常用于开发或者创建自己的容器是开发使用的主要形式。三、singularity 和docker 的区别1、Singularity与Docker的一个很大区别是生产环境使用的Singulariy容器是只读的SIF格式文件.四、docker 操作1、docker镜像制作的两种方式①使用 docker commit从运行中的容器创建镜像。步骤1拉取基础镜像并启动容器拉取一个 Ubuntu 镜像docker pull ubuntu:22.04步骤2启动一个交互式容器docker run -it --name my_container ubuntu:22.04 /bin/bash步骤3在容器内做修改在容器内安装模型所需的各种依赖等步骤4 在主机上面重新封装这个容器为新的镜像退出容器退出容器指令exit提交镜像docker commitmy_containermy_nginx_image:v1②使用 Dockerfile选择主机新建Dockerfile文件在项目目录构建镜像docker build -t slowfast:v1 .测试运行镜像docker run --rm -it \--gpus all \-v /data/datasets:/workspace/datasets \-v /data/output:/workspace/output \slowfast:v1--gpus all 容器使用服务器 GPU-v 数据目录 把服务器数据集挂载到容器-v 输出目录 把训练结果保存到服务器而不是容器内部slowfast:v1 使用你自己构建的镜像五、singularity操作读取 slowfast.def → 从 Docker Hub 下载 NVIDIA CUDA 基础镜像 → 临时展开成可写文件系统 → 执行 %post安装 Conda 和依赖 → 复制 SlowFast 代码 → 最终压缩生成 slowfast.sif核心步骤新建slowfast.defBootstrap: dockerFrom: nvidia/cuda:12.1.1-cudnn8-runtime-ubuntu22.04%filesenvironment.yml /opt/environment.ymlSlowFast /opt/SlowFast%postapt-get updateDEBIAN_FRONTENDnoninteractive apt-get install -y \wget git ffmpeg libgl1 libglib2.0-0 build-essentialrm -rf /var/lib/apt/lists/*wget -q https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh \-O /tmp/miniconda.shbash /tmp/miniconda.sh -b -p /opt/condarm /tmp/miniconda.sh/opt/conda/bin/conda env create \-n slowfast \-f /opt/environment.yml/opt/conda/bin/conda clean -a -y%environmentexport PATH/opt/conda/envs/slowfast/bin:/opt/conda/bin:$PATHexport PYTHONPATH/opt/SlowFast:$PYTHONPATHexport LC_ALLC.UTF-8export LANGC.UTF-8%runscriptcd /opt/SlowFastexec python $%testpython -c import torch; print(PyTorch:, torch.__version__)由于From: nvidia/cuda:12.1.1-cudnn8-runtime-ubuntu22.04已经构造了基础sif镜像文件所以不需要先下载一个sif文件然后在使用sandbox 操作 处理sif文件。