Docker-kontin luominen

Helpoin tapa luoda, julkaista ja jakaa Docker-kontti on Docker Hub, täällä

https://hub.docker.com/.

Tieto siitä, miten Docker-kontti rakennetaan, tallennetaan tekstitiedostoon nimeltä ”Dockerfile”. Tyypillinen Dockerfile voisi näyttää tältä

##################################################################################################  
# Set the starting image
  FROM ubuntu:zesty

  MAINTAINER Daniel Fischer <daniel.fischer@luke.fi>
  
##################################################################################################  
# Install the required system components
  RUN apt-get update && apt-get install -y \
        openjdk-8-jre \
        python \
        git \
        wget \
        unzip \
     && rm -rf /var/lib/apt/lists/*  
  
##################################################################################################  
# Setup the folder structure (if needed)  
  RUN mkdir /data
  RUN mkdir /data/fromHost

################################################################################################## 
# Install the required binaries

# ------------
# Cufflinks 2.2.1
# ------------
  RUN wget http://cole-trapnell-lab.github.io/cufflinks/assets/downloads/cufflinks-2.2.1.Linux_x86_64.tar.gz
  RUN tar -xzf cufflinks-2.2.1.Linux_x86_64.tar.gz
  RUN mv /cufflinks-2.2.1.Linux_x86_64 /bin
  RUN rm cufflinks-2.2.1.Linux_x86_64.tar.gz
 
#-------------
# FastQC 0.11.5
# ------------
  RUN wget http://www.bioinformatics.babraham.ac.uk/projects/fastqc/fastqc_v0.11.5.zip
  RUN unzip fastqc_v0.11.5.zip
  RUN chmod +x /FastQC/fastqc
  RUN mv /FastQC /bin/
  RUN rm fastqc_v0.11.5.zip
  
# ------------
# STAR 2.5.2b:
# ------------
  RUN wget -qO- https://github.com/alexdobin/STAR/archive/2.5.2b.tar.gz | tar -xz
  RUN mv /STAR-2.5.2b/ /bin/STAR-2.5.2b/
  
# ------------
# HiSAT2 2.0.5:
# ------------
  RUN wget -qO- ftp://ftp.ccb.jhu.edu/pub/infphilo/hisat2/downloads/hisat2-2.0.5-Linux_x86_64.zip > hisat2-2.0.5-Linux_x86_64.zip
  RUN unzip hisat2-2.0.5-Linux_x86_64.zip
  RUN mv hisat2-2.0.5 /bin/
  RUN rm hisat2-2.0.5-Linux_x86_64.zip    
  
# -----------
# StringTie 1.33
# -----------
  RUN wget -qO- http://ccb.jhu.edu/software/stringtie/dl/stringtie-1.3.3.Linux_x86_64.tar.gz  | tar -xz
  RUN mv stringtie-1.3.3.Linux_x86_64/stringtie /bin
  
##################################################################################################   
# Set the the environment variables
  ENV PATH $PATH:/bin/STAR-2.5.2b/bin/Linux_x86_64_static/:/bin/hisat2-2.0.5/:/bin/FastQC/:/bin/cufflinks-2.2.1.Linux_x86_64/

Dockerfilen eri valinnat pitää vielä selittää tässä!

Kun Dockerfile on olemassa, kontin voi rakentaa paikallisesti kirjoittamalla (samassa kansiossa, jossa ”Dockerfile” on)

docker build -t user/example:0.1 -t user/example:latest .

Tässä ”-t” merkitsee (tag) rakennettavan version. Esimerkissämme annamme versionumeron 0.1 ja merkitsemme sen samalla uusimmaksi. (latest-merkinnän kanssa on ongelma, jonka selitän myöhemmin; toistaiseksi tämä kaksoismerkintä riittää.) Versionumeron lisäksi Docker-levykuva tarvitsee nimen (tässä: example) ja siihen liittyvän Docker Hub -käyttäjänimen (tässä: user). Dockerfilen monimutkaisuudesta riippuen rakentaminen voi kestää jonkin aikaa. Kun se on valmis, levykuvan voi viedä Docker Hubiin ajamalla

docker push user/example:0.1 
docker push user/example:latest

Pelkkiä kirjastoja sisältävien levykuvien sijaan voi myös luoda levykuvia, joissa on pelkkää dataa. Silloin Dockerfile vain lataa datatiedostot.

Jos käytät Docker-daemonia ensimmäistä kertaa levykuvan lähettämiseen, sinun pitää ensin kirjautua Dockeriin. Sitä varten aja (ennen levykuvan vientiä):

docker login
 (Enter user and password)