Docker 시작하기 Start.

BioinformaticsAndMe



#Docker 가 뭘까? 위키백과 정의를 살펴보면.. 아래와 같다.

도커(Docker)리눅스의 응용 프로그램들을 소프트웨어 컨테이너 안에 배치시키는 일을 자동화하는 오픈 소스 프로젝트이다.

도커 컨테이너는 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싼다. 여기에는 코드, 런타임, 시스템 도구, 시스템 라이브러리 등 서버에 설치되는 무엇이든 아우른다. 이는 실행 중인 환경에 관계 없이 언제나 동일하게 실행될 것을 보증한다.

빨간색으로 표시해놓은 것이 Docker의 핵심이자, 그러한 이유로 많은 유저들이 사용 중이다.

구글, 아마존 등 자사시스템이나 클라우드 환경에서 Docker 활용은 엄청나다.


위 그림이 Dokcer의 마스코트 흰수염고래?인데, 저 고래가 나르는 Container(컨테이너)가 별개의 소프트웨어 정도라 생각하면 되겠다.

음.. 저 고래가 우분투에 가서 자리잡으면 저 컨테이너에 있는 소프트웨어를 사용할 수 있고,

맥으로 가던, 윈도우로 가던 자리만 잡아주면 컨테이너를 사용할 수 있다 (설명이 너무 유치해서 죄송합니다).



#자.. 그래서 Bioinformatics를 공부하는 생물전공자가 왜 Docker 에 관심이 생겼을까?

사실 여러가지 이유가 있는데, 오늘은 처음 접했던 이유만 말하겠다.

생물정보학 분석①자동화 ②유동화 때문이었다.

①자동화 : 우리가 알고 있듯이, 생물정보학 분석이 툴 하나 돌려서 끝나는건 거의 없다. 뭐 NGS calling(QC-Alignment-Calling) 과정도 GATK 가이드라인을 철저히 따라하면 Step이 10개가 넘는다. Docker를 사용하면 전반적인 분석과정을 모듈화해 Automation 하기 좋다. 뭐 나중에 계속 얘기하겠지만 버전 관리나 파라미터 조절이 쉽다.

②유동화 : 내 실험실에 Bioinformatics 파이프라인을 다 완성했었는데, 서버를 업그레이드 했더니.. 안된다.. 이런 경우가 꽤 흔하다. 대부분의 툴이 특정 환경에 맞추어 제작된 것이기에 OS 변동이 크다면 먹통이 된다. 또한,  A회사에서 작업하던 파이프라인을 B회사에 곧바로 사용할 수없다. 하지만 Docker는 앞에 언급한 모든 것을 유동적으로 적용시킬 수 있다.


https://f1000research.com/articles/4-997/v1

위 논문에서 참조한 아래 그림을 살펴보자.

#전형적인 NGS pipeline for variant calling 을 Docker Container 를 이용해 파이프라인화 했다.

1. Pre-alignment quality control

2. Sequence alignment

3. Raw alignment processing (e.g. local realignment around candidate indel sites and base quality score recalibration)

4. Post-alignment quality control

5. Variant calling



# 또한, 'BioContainer' 라는 주제로 생물정보학 분석 툴들을 모아둔 Docker 사이트도 존재한다.

https://hub.docker.com/u/biocontainers/

한 번 다운받아서 tutorial대로 실행해보면 간단하게 분석 툴을 사용할 수 있음을 알게된다.



마무리하며..

앞으로 docker의 설치, 기본 command 에서부터 Bioinformatics 툴 활용까지 다뤄볼 예정이다.

필자가 computer science 에 정통하지 않기 때문에, 실수가 있을 수도 있다 (그렇다면 댓글...).

쏟아지는 생물학 데이터와 늘어나는 분석 툴을 효율적으로 관리할 수 있는 Docker 를 함께 알아간다는 점에 초점을 둘 것이다.



Docker 시작하기 End

BioinformaticsAndMe

'Program' 카테고리의 다른 글

Jupyter notebook (주피터 노트북)  (0) 2019.11.14
[Kubernetes] 쿠버네티스 소개  (0) 2019.10.18
API 기초 학습  (0) 2019.09.26
Docker 설치  (0) 2018.09.03
[Pachyderm] Splitting Data for Distributed Processing (분산처리)  (0) 2018.07.08

+ Recent posts