Create a docker container
The easiest way to create, publish and share a docker container is via the docker hub, here
The information, how a docker container is build is then stored in a text file called ‘Docker’. A typical dockerfile could look this this
################################################################################################## # 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/
Details on the different options in a dockerfile are still required to be explained here!
Once we have a docker file, we can create locally the docker container by typing (in the same folder, where the ‘Dockerfile’ is located)
docker build -t user/example:0.1 -t user/example:latest .
Here, the ‘-t’ is used to tag the docker build. In Out example we assign the version number 0.1 and also declare it to be the latest. (There is an issue with the latest label, that I’ll explain later, for now this double tagging should be, however, sufficient). Besides the version number of the docker container, the docker image needs a name (here: example) and an associated username from docker hub (here: user). Depending on the complexity of the Dockerfile, the building process might take a while. Once the building is ready, we can push the image to the Docker hub by running
docker push user/example:0.1 docker push user/example:latest
Instead of creating docker images that contain only libraries, it is also possible to create docker images that contain data only. In that case, the dockerfile just downloads the datafiles.
If you use the docker daemon the first time to submit a image, you need to login to docker first. For that you need to run (:before you push the image):
docker login (Enter user and password)