params <- list(isSlides = "no") ## ----setup, include=FALSE----------------------------------------------------- suppressPackageStartupMessages(require(knitr)) knitr::opts_chunk$set(echo = TRUE, tidy = T) ## ---- results='asis',include=TRUE,echo=FALSE---------------------------------- if(params$isSlides != "yes"){ cat("# Containers --- " ) } ## ---- results='asis',include=TRUE,echo=FALSE---------------------------------- if(params$isSlides == "yes"){ cat("class: inverse, center, middle # What are containers?
Why should we use them?

--- " ) }else{ cat("# What are containers? Why should we use them? --- " ) } ## ---- echo=FALSE, out.width="75%"--------------------------------------------- knitr::include_graphics("imgs/jhu_docker_rationale.png") ## ---- echo=FALSE, out.width="75%"--------------------------------------------- knitr::include_graphics("imgs/jhu_docker_rationale2.png") ## ---- echo=FALSE, out.width="85%", fig.align='center'------------------------- knitr::include_graphics("imgs/docker_schema_empty.png") ## ---- echo=FALSE, out.width="85%", fig.align='center'------------------------- knitr::include_graphics("imgs/docker_schema_addBuild.png") ## ---- echo=FALSE, out.width="85%", fig.align='center'------------------------- knitr::include_graphics("imgs/docker_schema_addRun.png") ## ---- echo=FALSE, out.width="70%", fig.align='center'------------------------- knitr::include_graphics("imgs/docker_schema_all.png") ## docker --version ## ---- echo=FALSE, out.width="40%", fig.align='left'--------------------------- cat("\n") knitr::include_graphics("imgs/docker_version.png") ## ---- echo=FALSE, out.width="100%", fig.align='center'------------------------ knitr::include_graphics("imgs/docker_config.png") ## ---- results='asis',include=TRUE,echo=FALSE---------------------------------- if(params$isSlides == "yes"){ cat("class: inverse, center, middle # Running Docker containers
from Docker Hub images

--- " ) }else{ cat("# Running Docker containers from Docker Hub images --- " ) } ## docker pull rocker/rstudio:4.2.3 ## docker images ## ---- echo=FALSE, out.width="100%", fig.align='left'-------------------------- cat("\n") knitr::include_graphics("imgs/docker_images.png") ## docker images ## ---- echo=FALSE, out.width="100%", fig.align='left'-------------------------- cat("\n") knitr::include_graphics("imgs/docker_images.png") ## ---- echo=FALSE, out.width="80%", fig.align='center'------------------------- knitr::include_graphics("imgs/docker_desktop_images.png") ## docker run --rm \ ## -p 8787:8787 \ ## -e PASSWORD=password \ ## rocker/rstudio:4.2.3 ## ---- echo=FALSE, out.width="100%", fig.align='center'------------------------ knitr::include_graphics("imgs/rstudio_interface.png") ## docker ps ## ---- echo=FALSE, out.width="100%", fig.align='center'------------------------ cat("\n") knitr::include_graphics("imgs/docker_ps.png") ## docker stop 6ee1e0e97bf8 # this is the ID from 'docker ps' ## docker ps ## ---- echo=FALSE, out.width="100%", fig.align='center'------------------------ cat("\n") knitr::include_graphics("imgs/docker_stop.png") ## # navigate to 'r_course' directory in downloaded material ## cd /PathToDownloadedCourse/Reproducible_R-master/r_course ## ## # launch docker container ## docker run --rm \ ## -v ./data:/home/rstudio \ ## -p 8787:8787 \ ## -e PASSWORD=password \ ## rocker/rstudio:4.2.3 ## ---- echo=FALSE, out.width="100%", fig.align='center'------------------------ knitr::include_graphics("imgs/rstudio_interface_volume.png") ## ---- echo=FALSE, out.width="100%", fig.align='left'-------------------------- knitr::include_graphics("imgs/rstudio_interface_volume_write.png") ## ---- eval=F------------------------------------------------------------------ ## dataIn <- read.csv("readThisTable.csv") ## head(dataIn, 2) ## # add gene IDs and write to new file on local computer ## dataIn$Gene_ID <- seq(nrow(dataIn)) ## write.csv(dataIn, "rnaseq_table_withIDs.csv") ## # For windows use: dir /a ## ls -a data ## rm -r data/.local data/.config ## ---- echo=FALSE, out.width="100%", fig.align='center'------------------------ cat("\n") knitr::include_graphics("imgs/docker_hidden_files.png") ## ---- results='asis',include=TRUE,echo=FALSE---------------------------------- if(params$isSlides == "yes"){ cat("class: inverse, center, middle # Building custom images
from a Dockerfile

--- " ) }else{ cat("# Building custom images from a Dockerfile --- " ) } ## ---- echo=FALSE, out.width="85%", fig.align='left'--------------------------- knitr::include_graphics("imgs/dockerfile1_all.png") ## ---- echo=FALSE, out.width="85%", fig.align='left'--------------------------- knitr::include_graphics("imgs/dockerfile1_FROM.png") ## ---- echo=FALSE, out.width="85%", fig.align='left'--------------------------- knitr::include_graphics("imgs/dockerfile1_sys_deps.png") ## ---- echo=FALSE, out.width="85%", fig.align='left'--------------------------- knitr::include_graphics("imgs/dockerfile1_Rpackages.png") ## ---- echo=FALSE, out.width="85%", fig.align='left'--------------------------- knitr::include_graphics("imgs/dockerfile1_EXPOSE_CMD.png") ## docker build -t rocker/rstudio:4.2.3_v2 ./data ## ---- echo=FALSE, out.width="100%", fig.align='left'-------------------------- cat("\n") knitr::include_graphics("imgs/dockerV1_build_log.png") ## docker images ## ---- echo=FALSE, out.width="65%", fig.align='left'--------------------------- cat("\n") knitr::include_graphics("imgs/docker_images_v1.png") ## docker run --rm \ ## -v ./data:/home/rstudio \ ## -p 8787:8787 \ ## -e PASSWORD=password \ ## rocker/rstudio:4.2.3_v2 ## ---- echo=FALSE, out.width="100%", fig.align='left'-------------------------- cat("\n") knitr::include_graphics("imgs/docker_image_v1_interface.png") ## ---- results='asis',include=TRUE,echo=FALSE---------------------------------- if(params$isSlides == "yes"){ cat("class: inverse, center, middle # Install conda packages
in a Docker image

--- " ) }else{ cat("# Install conda packages in a Docker image --- " ) } ## ---- echo=FALSE, out.width="100%", fig.align='left'-------------------------- knitr::include_graphics("imgs/dockerfile_salmon_all.png") ## docker build -t rocker/rstudio:4.2.3_salmon -f ./data/Dockerfile_salmon ./data/ ## ---- echo=FALSE, out.width="100%", fig.align='left'-------------------------- cat("\n") knitr::include_graphics("imgs/docker_salmon_build_log.png") ## docker images ## ---- echo=FALSE, out.width="70%", fig.align='left'--------------------------- cat("\n") knitr::include_graphics("imgs/docker_images_salmon.png") ## docker run --rm \ ## -v ./data:/home/rstudio \ ## -p 8787:8787 \ ## -e PASSWORD=password \ ## rocker/rstudio:4.2.3_salmon ## ---- eval=F, tidy=FALSE------------------------------------------------------ ## library(Herper) ## # the environment name and miniconda path set in the Dockerfile ## Herper::local_CondaEnv(new = "pipe_env", ## pathToMiniConda = "/home/miniconda") ## # test out salmon ## system("salmon -h") ## ---- echo=FALSE, out.width="75%", fig.align='left'--------------------------- knitr::include_graphics("imgs/docker_image_salmon_interface.png") ## ---- echo=FALSE, out.width="100%", fig.align='left'-------------------------- cat("\n") knitr::include_graphics("imgs/docker_desktop_salmon.png") ## ---- echo=FALSE, out.width="100%", fig.align='left'-------------------------- cat("\n") knitr::include_graphics("imgs/docker_desktop_salmon_running.png") ## # log in and provide credentials used to sign into Docker Hub ## # this will prompt you to enter username and password ## docker login ## ## # tag the image you want to push with your Docker Hub username and a tag name after the colon ## # the ID is from the 'docker images' command ## docker tag 98579f07a026 dougbarrows/rstudio_4.2.3_salmon:topush ## ## # push to Docker Hub ## docker push dougbarrows/rstudio_4.2.3_salmon:topush ## ---- echo=FALSE, out.width="100%", fig.align='left'-------------------------- knitr::include_graphics("imgs/dockerhub_after_push.png") ## ---- results='asis',include=TRUE,echo=FALSE---------------------------------- if(params$isSlides == "yes"){ cat("class: inverse, center, middle # Use renv and Docker together

--- " ) }else{ cat("# Use renv and Docker together --- " ) } ## ---- eval=F------------------------------------------------------------------ ## setwd("/PathToMyDownload/Reproducible_R-master/r_course/Data/renv_docker") ## ## # load in packages to recreate environment we used previously ## library(renv) ## library(BiocManager) ## library(Herper) ## library(dplyr) ## library(DESeq2) ## library(tximport) ## ## # initialize renv ## renv::init() ## ## ---- echo=FALSE, out.width="60%", fig.align='left'--------------------------- knitr::include_graphics("imgs/lock_file_docker.png") ## ---- echo=FALSE, out.width="80%", fig.align='left'--------------------------- knitr::include_graphics("imgs/dockerfile_renv_rver.png") ## ---- echo=FALSE, out.width="80%", fig.align='left'--------------------------- knitr::include_graphics("imgs/dockerfile_renv_restore.png") ## ## # build the image ## docker build -t rocker/rstudio:4.1.1_renv ./data/renv_docker ## ## # launch a container ## docker run --rm \ ## -v ./data:/home/rstudio \ ## -p 8787:8787 \ ## -e PASSWORD=password \ ## rrocker/rstudio:4.1.1_renv