singularity和docker的安装使用

目录

  • singularity和docker的安装使用
    • singularity的安装和使用
      • 1. 准备
      • 2. 简单使用
    • docker的安装和使用
      • 1. 准备
      • 2. 简单使用
    • 3. 一些小Tips

singularity和docker的安装使用

singularity的安装和使用

官网:https://sylabs.io/guides/3.6/user-guide/
singularity与docker功能相似,但是相比与docker需要root权限,或者专门添加用户组,singularity在非root时也可使用,且轻量级,修改方便。singularity镜像有两种格式:sif格式可用于部署;sanbox格式是可写的文件系统,用于开发过程,方便根据需要修改其中的内容。两种格式之间相互转换,即开发完成后转换为sif。
其实不管singularity还是docker都需要良好的网络状态,很重要。

1. 准备

准备一:

sudo apt-get update
sudo apt-get install -y build-essential libssl-dev uuid-dev libgpgme11-dev squashfs-tools libseccomp-dev wget pkg-config git cryptsetup

准备二:安装GO语言
若之前有安装,则需要完整删除rm -rf /usr/local/go

cd /home/zhaohuiyao/Biosoft/
wget https://dl.google.com/go/go1.16.12.linux-amd64.tar.gz
tar -C /home/zhaohuiyao/Biosoft/singularity -xzvf go1.16.12.linux-amd64.tar.gz  #解压,指定解压目录
rm go1.16.12.linux-amd64.tar.gz #删除安装包
#添加到环境变量
echo 'export PATH=/home/zhaohuiyao/Biosoft/singularity/go/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

#再次强调~/.bashrc文件对用户的重要性,进行备份,防止多次source,破坏文件。

准备三:下载和安装singularity
下载地址:https://github.com/hpcng/singularity/releases

cd /home/zhaohuiyao/Biosoft/singularity
wget https://github.com/apptainer/singularity/releases/download/v3.8.7/singularity-3.8.7.tar.gz
tar -xzvf singularity-3.8.7.tar.gz #解压
rm singularity-3.8.7.tar.gz
cd singularity-3.8.7/
./mconfig
cd builddir
make
sudo make install
#一定要保证上述正确且完整执行,否则后续会无法使用
#添加到环境变量
echo 'export PATH= /home/zhaohuiyao/Biosoft/singularity/singularity-3.8.7/builddir/singularity:$PATH' >> ~/.bashrc
source ~/.bashrc

准备四:镜像来源
①官方镜像库:https://cloud.sylabs.io/library;②Docker库:https://hub.docker.com/;③软件安装手册中提到的该软件的singularity下载命令。
#三种不同镜像,在下载软件时的命令

singularity pull library://cenat/default/blast.sif:latest
singularity pull docker://ncbi/blast
singularity pull shub://repeatexplorer/repex_tarean:latest

2. 简单使用

#下载容器

cd /home/zhaohuiyao/Biosoft/singularity/
singularity pull docker://ncbi/blast
#会在当前目录下生成文件blast_latest.sif

#交互式运行(输入exit退出)

singularity shell blast_latest.sif bash
makeblastdb -in ~/Biosoft/singularity/O.inf_mito_ref.fasta -dbtype nucl -parse_seqids -out ~/Biosoft/singularity/O.inf_mito_refDB
exit

#直接运行

singularity exec blast_latest.sif makeblastdb -in ~/Biosoft/singularity/O.inf_mito_ref.fasta -dbtype nucl -parse_seqids -out ~/Biosoft/singularity/O.inf_mito_refDB

docker的安装和使用

root权限安装。将普通用户添加到docker用户组,普通用户就可以使用。或者给普通用户赋予sudo权限,在使用docker命令之前,添加sudo。
官网:https://docs.docker.com/engine/install/ubuntu/

1. 准备

准备一:ubuntu安装docker

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo chmod a+r /etc/apt/keyrings/docker.gpg
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo docker run hello-world
sudo docker run hello-world

准备二:将普通用户添加到docker组(一种选择)
#安装docker后,会自动生成docker用户组,若是没有,手动生成:sudo groupadd docker
#添加用户到docker组中(安装人员的工作完成)

sudo gpasswd -a zhaohuiyao docker

#sudo gpasswd -d zhaohuiyao docker #从docker组删除用户
#zhaohuiyao用户使用,查看自己所在组信息

id						#发现自己在两个组中,zhaohuiyao组和docker组。并且当前登陆状态所在组是zhaohuiyao组
newgrp docker			#切换到docker组
id									#再次查看

singularity和docker的安装使用_第1张图片
准备三:给普通用户赋予sudo权限(另一种选择)
#修改文件/etc/sudoers,chmod 775 /etc/sudoers & vim /etc/sudoers
#恢复文件属性chmod 444 /etc/sudoers
singularity和docker的安装使用_第2张图片

2. 简单使用

#直接检索软件的合适镜像

docker search Tophat

singularity和docker的安装使用_第3张图片
#选择合适的进行拉取(可指定版本,也就是Tag)

docker pull limesbonn/tophat2

singularity和docker的安装使用_第4张图片
#查看当前所有镜像(查看镜像是否拉取成功)

docker image ls

singularity和docker的安装使用_第5张图片
#删除不需要的镜像(必须保证该镜像没有被正在运行)

docker rmi -f limesbonn/tophat2

#运行镜像(该镜像可以多次且同时被运行,每一次被赋予不同的容器名。镜像被运行形成容器)

docker run -it -d limesbonn/tophat2 /bin/bash
docker run -it -d --name tophat2.2 limesbonn/tophat2 /bin/bash	

#两次运行,两个容器名。且第二次用参数–name,指定容器名。第一次随机生成
在这里插入图片描述
#查看两次的容器名

docker ps

在这里插入图片描述
#上面两次运行均没有挂在文件或目录。若需要,使用参数-v
#挂载文件

docker run -it -d -v /home/zhaohuiyao/Genome_mito/data6/1.fq:/home/1.fq --name tophat2.2 limesbonn/tophat2 /bin/bash	

#挂载目录

docker run -it -d -v /home/zhaohuiyao/Genome_mito/data6:/home --name tophat2.2 limesbonn/tophat2 /bin/bash	

#进入容器1,使用exit退出

docker exec -it goofy_williams /bin/bash

在这里插入图片描述
#进入容器2

docker exec -it tophat2.2 /bin/bash

#将容器内文件提取出(保证该容器已经退出)

docker cp tophat2.2:/home/1_clean.fq ./

#将容器内文件夹提取出(保证该容器已经退出)

docker cp tophat2.2:/home ./

#停止容器

docker stop goofy_williams

#重启容器

docker restart goofy_williams

#干掉容器

docker kill goofy_williams

使用docker的流程,①下载镜像;②运行镜像形成容器(使用参数-v,将输入文件或目录挂载到容器中);③进入容器;④对输入文件进行操作,得到输出文件;⑤退出容器;⑥将输出文件提取出该容器(若输出文件在输入目录下,则会直接出现,不需要提取);⑦干掉容器

3. 一些小Tips

docker需要root用户的一些操作,请注意。若是普通用户使用中出现报错,不一定是软件本身问题,可能就是你没有docker权限。

你可能感兴趣的:(生信软件,docker,容器,生物信息学)