Docker & Singularity

2021-01-15 生信砍柴路

很早就了解過docker,但一直沒機會用(也不是沒機會,主要還是自己懶)。最近可能被工作需求了,才又撿起來了。真的是需求才是動力呀。

自從微軟更新了WSL2(雖然我一直在用WSL),但是發現docker只能在WSL2下使用,又是被需求更新。於是上網查了下window 家庭版的更新方法。打個補丁就好(可以參考該連結https://www.jianshu.com/p/a20c2d58eaac)。
sudo service docker start

假如想以非 root 用戶的身份使用 docker , 把用戶添加到 docker 用戶組即可。
#非 root 用戶使用 dockersudo usermod -aG docker your-user

直接在命令行下敲 docker就會有docker的各種命令以及幫助。
docker運行需要鏡像,可以自己做也可以在docker hub上拉一個。
一些簡單的命令網上很多就不囉嗦了。說下自己需要用的一個鏡像AnnotSV。這個軟體是用來做SV(Structural variation)注釋的,當然注釋SV的軟體還有其他的一些,比如VEP等。
首先從docker hub上把該鏡像pull下來(pull之前可用docker search也可在docker hub直接進行搜素)
docker pull mgibio/annotsv-cwl:2.3

docker run -it mgibio/annotsv-cwl:2.3 AnnotSV 

docker run -v /home/wjb/Desktop/sv_test/:/mnt:rw mgibio/annotsv-cwl:2.3 AnnotSV -SVinputFile /mnt/100601044.sv.vcf -SVinputInfo 1 -outputFile /mnt/test.annotated2.tsv -svtBEDcol 4 -annotationsDir /mnt/

-v 參數:掛載宿主機目錄到容器內目錄,冒號前為宿主機目錄,後為容器內目錄,最後是以讀寫方式掛載,掛載後宿主機和容器內該目錄下的文件會同步。然後說下Singularity,這個東東是第一次聽說,查了下這個是特意為HPC準備的,安裝也挺麻煩的。
##sudo apt-get update && sudo apt-get install -y \    build-essential \    uuid-dev \    libgpgme-dev \    squashfs-tools \    libseccomp-dev \    wget \    pkg-config \    git \    cryptsetup-bin

export VERSION=1.15.1 OS=linux ARCH=amd64 && \    wget https://dl.google.com/go/go$VERSION.$OS-$ARCH.tar.gz && \    sudo tar -C /usr/local -xzvf go$VERSION.$OS-$ARCH.tar.gz && \    rm go$VERSION.$OS-$ARCH.tar.gz
echo 'export GOPATH=${HOME}/go' >> ~/.bashrc && \ echo 'export PATH=/usr/local/go/bin:${PATH}:${GOPATH}/bin' >> ~/.bashrc && \ source ~/.bashrc

export VERSION=3.6.0 &&     wget https://github.com/sylabs/singularity/releases/download/v${VERSION}/singularity-${VERSION}.tar.gz && \    tar -xzf singularity-${VERSION}.tar.gz && \    cd singularity./mconfig && \    make -C ./builddir && \    sudo make -C ./builddir install

singularity 可直接把docker的鏡像轉成自己的格式
singularity -d build annotsv.sif docker://mgibio/annotsv-cwl:2.3singularity run annotsv.sif AnnotSV 查看AnnotSV軟體幫助信息singularity run annotsv.sif 

singularity run annotsv.sif AnnotSV -SVinputFile /home/wjb/100601044.sv.vcf -SVinputInfo 1 -outputFile /home/wjb/annotsv_result/test.annotated2.tsv -svtBEDcol 4 -annotationsDir /home/wjb/

singularity的好處不止是支持HPC,無需掛載宿主機目錄,而且singularity的鏡像直接通過複製到其他地方就可以直接使用,這點更方便部署及遷移。

相關焦點

  • 雲計算核心技術Docker教程: Docker 容器連接
    下面我們來實現通過埠連接到一個 docker 容器。我們創建了一個 python 應用的容器。命令如下:# docker run -d -P training/webapp python app.py另外,我們可以指定容器綁定的網絡地址,比如綁定 127.0.0.1。
  • 雲計算核心技術Docker教程:Docker Compose的restart和rm命令詳解
    Docker-Compose restart命令可以重新啟動所有已停止並正在運行的服務,Docker-Compose rm命令可以刪除已經停止的容器,如果服務在運行,需要先docker-compose stop 停止容器。
  • 雲計算核心技術Docker教程:利用Dockerfile來創建鏡像
    在docker使用過程中,我們可以從已經創建的容器中更新鏡像,並且commit提交這個鏡像來創建新的鏡像,使用docker commit 來擴展一個鏡像比較簡單,但是不方便在一個團隊中分享此時我們可以使用 Dockerfile 指令來創建一個新的鏡像。
  • 微服務部署到docker中
    可以看到項目根目錄下新增一個名為Dockerfile的文件6.通過Xftp將項目從Windows下的磁碟位置拷貝到Linux的root目錄下二、Linux下通過Docker構建應用1.通過Xshell連接上Linux虛擬機,進入到項目目錄下,然後通過docker
  • 雲計算核心技術Docker教程:Docker Compose的pull和push命令詳解
    Docker-Compose pull命令可以拉取docker-compose.yml或者docker-stack.yml文件中定義的服務關聯的鏡像,Docker-Compose push命令可以將服務鏡像推送到registry/repository中。
  • 將Docker與pipeline一起使用
    Jenkinsfile(聲明性管道)pipeline { agent none stages { stage('Back-end') { agent { docker { image 'maven:3-alpine' } } steps { sh 'mvn --version' } } stage('Front-end') { agent { docker { image
  • Docker 引擎概述
    Docker Engine 實際上是一個客戶端伺服器(client-server)應用:一個在伺服器上長期運行的被稱為 dockerd 的進程。一個指定結構的 APIs,這個 API 被用來與 Docker 守護進程進行通信。
  • 【最新版】Docker實戰總結
    簡單的理解,docker就是一個軟體貨櫃化平臺,就像船隻、火車、卡車運輸貨櫃而不論其內部的貨物一樣,軟體容器充當軟體部署的標準單元,其中可以包含不同的代碼和依賴項。 按照這種方式容器化軟體,開發人員和 IT 專業人員只需進行極少修改或不修改,即可將其部署到不同的環境,如果出現的故障,也可以通過鏡像,快速恢復服務。
  • 使用Jenkins、Docker 構建部署 Serverless 應用
    和 docker 命令掛載到容器中,啟動 jenkins 命令如下: 注意:由於容器內 Jenkins 服務是由 jenkins 用戶啟動的,它無法訪問 /var/run/docker.sock,因此我們需要更改這個文件的權限。
  • 雲計算核心技術Docker教程:Compose使用
    2.使用 docker-compose.yml 定義構成應用程式的服務,這樣它們可以在隔離環境中一起運行。3.最後,執行 docker-compose up 命令來啟動並運行整個應用程式。運行以下命令以下載 Docker Compose 的當前穩定版本:$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • CoreOS實踐指南(七):Docker容器管理服務
    操作 docker 的方式與 systemctl、etcdctl 類似,需要由一個二級命令共同組成一個完整的命令。通過 docker pull 命令可以指定的網絡地址拉取鏡像到本地(如果指定的是名稱而不是網絡地址,則會在docker官方的鏡像倉庫裡面搜索,比如下面的兩個例子)。
  • SpringBoot+GitLab+Docker+Jenkins實現持續集成下
    --Dockerfile文件所在目錄--> <dockerDirectory> ${project.basedir}/src/main/resources </dockerDirectory
  • Docker是什麼?有什麼用途?及理論知識詳細說明
    運維生成環境中:docker化。 發布服務不用擔心伺服器的運行環境,所有的伺服器都是自動分配docker,自動部署,自動安裝,自動運行 再不用擔心其他服務引擎的磁碟問題,cpu問題,系統問題了 資源利用更出色 自動遷移,可以製作鏡像,遷移使用自定義的鏡像即可遷移,不會出現什麼問題 管理更加方便了 為什麼docker越來越受歡迎 容器化越來越受歡迎
  • Docker v1.13.0 正式版發布,應用容器引擎
    可通過 docker plugin rm 命令卸載插件。Top 10 新增功能正式支持服務棧: docker stack正式支持插件:docker plugin添加在 Swarm 集群環境下對密碼、密鑰管理的 secret 管理服務:docker secret增加 docker system 命令
  • Docker邁入雲(DockerHub)+端(Docker引擎)時代
    Docker深受網際網路巨頭髮PaaS創業公司青睞,國內的百度在大規模實踐Docker,Google 的 Compute Engine 也支持 docker 在其之上運行,Redhat也積極地在RHEL中集成對Docker的支持。
  • Docker 創建你自己的橋接網絡
    下面的例子顯示了如何創建一個橋接網絡: $ docker network create -d bridge my_bridge 參數 -d 用於告訴 Docker 在新的網絡中使用 橋接(bridge) 驅動。
  • Docker 容器 9 類 48 個常見故障的處理和使用規範 | 周末送資料
    Docker是一種相對使用較簡單的容器,我們可以通過以下幾種方式獲取信息:1、通過docker run執行命令,或許返回信息2、通過docker logs 去獲取日誌,做有針對性的篩選3、通過systemctl status docker查看docker服務狀態4、通過journalctl -u docker.service
  • 基於TensorFlow 、OpenCV 和 Docker 的實時視頻目標檢測
    難點在於將網絡攝像頭流發送到 docker 容器並恢復輸出流以使用 X11 伺服器顯示它。將視頻流發送到容器Linux 系統可以在/ dev /目錄中找到攝像頭設備,並可以將其作為文件進行操作。通常筆記本電腦攝像頭是「0」設備。
  • 雲計算核心技術Docker教程:docker構建緩存介紹
    如果根本不想使用緩存,則可以使用命令--no-cache=true 上的選項docker build。