From 2f9149ec7ed54e338081fd8ff51ba0b614e7c468 Mon Sep 17 00:00:00 2001 From: Alexander Botzki Date: Sun, 4 Jun 2023 19:13:37 +0200 Subject: [PATCH 1/4] draft version of the content with a lot of TODOs --- docs/chapters/chapter_02.md | 219 ++++++++++++++++++++++++++++++++++++ 1 file changed, 219 insertions(+) diff --git a/docs/chapters/chapter_02.md b/docs/chapters/chapter_02.md index 8eee10a..c77adde 100644 --- a/docs/chapters/chapter_02.md +++ b/docs/chapters/chapter_02.md @@ -1,3 +1,222 @@ +## Learning outcomes + +**After having completed this chapter you will be able to:** + +- fetch and run Docker containers on their computer. +*- interpret the instructions of a Dockerfile +- create simple Docker containers to run simple python/R scripts. + +## Material + +TODO: add overview of necessary files, video, etc + +[:fontawesome-solid-file-pdf: Download the presentation](../assets/pdf/docker_dance.pdf){: .md-button } + +* Unix command line [E-utilities documentation](https://www.ncbi.nlm.nih.gov/books/NBK179288/) + +## Docker Dance + +We will use Docker as an example to illustrate the development and use of containers. + +### Install Docker + +Please follow the installation of the latest version of Docker Desktop for your operating system. It is described at [Get Docker](https://docs.docker.com/get-docker/) + +TODO: add screenshots of the desired end points per OS + +### Introducing the Dockerfile + +TODO: add notes about good documentation of the recipe and how to freeze versions of tools in a container image + +The Dockerfile is the starting point of the Docker Dance which is schematically drawn here. + +TODO: add image with ELIXIR colors (build, tag, push, pull, save, load etc) + +Now, let's focus on the instructions for building Docker container images which are saved in a text file, named by default **Dockerfile**. + +**Basic instructions** + +Each row in the recipe corresponds to a **layer** of the final image. + +TODO: add image like e.g. https://www.google.com/url?q=https://houseofnasheats.com/wp-content/uploads/2019/02/Layered-Rainbow-Jello-11.jpg&sa=D&source=docs&ust=1685897875842731&usg=AOvVaw2Bc7qDiD4TfX0PN_ZJYk5v + +FROM: parent image. Typically, an “operating” system but you can also use an image of other parties as a starting point. This instruction creates the base layer. + +FROM ubuntu:18.04 + +Recommendation: pin the version of the OS of the base layer + +RUN: the command to execute inside the image filesystem. + +Think about it this way: every RUN line is essentially what you would run to install programs on a freshly installed Ubuntu OS. This command will be executed as root in the container. + +RUN apt install wget + +A basic recipe: + +FROM ubuntu:18.04 + +RUN apt update && apt -y upgrade +RUN apt install -y wget + +### Anatomy of the commands + +Building Docker image + +Implicitly looks for a Dockerfile file in the current directory: + +docker build . +docker build --file Dockerfile . +Syntax: –file / -f +. stands for the context (in this case, current directory) of the build process. This makes sense if copying files from filesystem, for instance. IMPORTANT: Avoid contexts (directories) overpopulated with files (even if not actually used in the recipe). +You can define a specific name for the image during the build process. +Syntax: -t imagename:tag. If not defined :tag default is latest. +docker build -t mytestimage:v1 . +The last line of installation should be Successfully built …: then you are good to go. + +Check with docker images that you see the newly built image in the list… +Then let’s check the ID of the image and run it! +docker images + +Additional statements for the Dockerfile + +TODO: add table with following content: + +| command | what does it do? | Example | | | +|---------|----------------------------------|-------------------------------------------------------|---|---| +| LABEL | Who is maintaining the container | LABEL maintainer=”your name ” | | | +| | | | | | +| | | | | | + +### A more complex recipe + +A more complex recipe (save it in a text file named Dockerfile: +FROM ubuntu:18.04 + +LABEL +WORKDIR ~ + +RUN apt-get update && apt-get -y upgrade +RUN apt-get install -y wget + +ENTRYPOINT ["/usr/bin/wget"] +CMD ["https://cdn.wp.nginx.com/wp-content/uploads/2016/07/docker-swarm-hero2.png"] + + +Tips for Docker files + +You should try to separate the Dockerfile into as many stages as possible, because this will allow for better caching +apt-get: +You must run apt-get update and apt-get install in the same command, otherwise you will encounter caching issues +Remember to use apt-get install -y, because you will have no control over the process while it’s building + + +Useful resources: + +[Dockerfile reference](https://docs.docker.com/engine/reference/builder/) +[Best practices](https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1008316) +[Ten simple rules for writing Dockerfiles for reproducible data science](https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1008316) + +???? difficult examples from BioInformatics ???? see Biocontainers community + +### Running our Docker container + +Now we want to use what is inside the image. +docker run creates a fresh container (active instance of the image) from a Docker (static) image, and runs it. + +The format is: +docker run [docker options] [image arguments] +This means that arguments that affect the way Docker runs must always go before the image name, but arguments that are passed to the image itself must go after the image name. +docker run ubuntu:18.04 /bin/ls + +TODO: add command which is from the example we use here + +Note: What happens if you execute ls in your current working directory: is the result the same? + +You can execute any program/command that is stored inside the image. +docker run ubuntu:18.04 /bin/whoami +docker run ubuntu:18.04 cat /etc/issue + + +List running containers: +docker ps +List all containers (whether they are running or not): +docker ps -a + +The IDs that are shown can be useful for other docker commands like docker stop and docker exec + +Volumes + +Docker containers are fully isolated. It is necessary to mount volumes in order to handle input/output files. +By default, Docker containers cannot access data on the host system. This means +You can’t use host data in your containers +All data stored in the container will be lost when the container exits +You can solve this in two ways: +-v /path/in/host:/path/in/container: This bind mounts a host file or directory into the container. Writes to one will affect the other. Note that both paths have to be absolute paths, so you often want to use`pwd`/some/path +-v volume_name:/path/in/container. This mounts a named volume into the container, which will live separately from the rest of your files. This is preferred, unless you need to access or edit the files from the host. +mkdir datatest +touch datatest/test +docker run --detach --volume $(pwd)/datatest:/scratch --name fastqc_container biocontainers/fastqc:v0.11.9_cv7 tail -f /dev/null +docker exec -ti fastqc_container /bin/bash +> ls -l /scratch +> exit + +TODO: Insert example exercise + +### Container registries (e.g. Docker Hub) + +Images can be stored locally or shared in a registry. Docker hub is the main public registry for Docker images. +Let’s search the keyword “ubuntu” + +TODO: insert screenshot of the output + +There are a lot of alternatives to Docker hub for image registries depending on the needs of the organisation or company. Some examples are shown below: + +TODO: insert image of the registries + + +1. Get the latest image or latest release +docker pull ubuntu + +TODO: add output + +2. Check the versions of Ubuntu present and fetch version 18.04 using tags + +TODO: add screenshot + +docker pull ubuntu:18.04 + +When you ran this command, Docker first looked for the image on your local machine, and when it couldn’t find it, pulled it down from a cloud registry of Docker images called Docker Hub + + +What other repositories are possible? +Have a look at the web site https://biocontainers.pro/ which is a specific directory of Bioinformatics related tools. +the images are stored in Docker hub and/or Quay.io (RedHat registry) +these images are normally created from [Bioconda](https://bioconda.github.io) + +Example: FastQC +https://biocontainers.pro/#/tools/fastqc + +TODO: Open solution +docker pull biocontainers/fastqc:v0.11.9_cv7 + +Images can be listed by the command +docker images +docker image ls + +Each image has a unique IMAGE ID. + +TODO: add image with example + +Where are these images stored? On Linux, they usually go to /var/lib/. +Docker is very greedy in storage so regular cleaning is necessary. We will see later on how you can do the purging. +Sometimes, it is also useful to get more information about the images. You can do this via + +docker image inspect + + + + ## 2.1 First subtopic Here you can enter text and if you need to cite[@creative_commons_2022] From 704ba27cda9feb097c7c712e5d0faa88294f8d9a Mon Sep 17 00:00:00 2001 From: Alexander Botzki Date: Mon, 5 Jun 2023 11:50:04 +0200 Subject: [PATCH 2/4] better formatting of the current content --- docs/chapters/chapter_02.md | 68 +++++++++++++++++++++++++++++-------- 1 file changed, 54 insertions(+), 14 deletions(-) diff --git a/docs/chapters/chapter_02.md b/docs/chapters/chapter_02.md index c77adde..211f41d 100644 --- a/docs/chapters/chapter_02.md +++ b/docs/chapters/chapter_02.md @@ -9,6 +9,7 @@ ## Material TODO: add overview of necessary files, video, etc +TODO: UTF-8 encoding apostrophes? [:fontawesome-solid-file-pdf: Download the presentation](../assets/pdf/docker_dance.pdf){: .md-button } @@ -40,9 +41,11 @@ Each row in the recipe corresponds to a **layer** of the final image. TODO: add image like e.g. https://www.google.com/url?q=https://houseofnasheats.com/wp-content/uploads/2019/02/Layered-Rainbow-Jello-11.jpg&sa=D&source=docs&ust=1685897875842731&usg=AOvVaw2Bc7qDiD4TfX0PN_ZJYk5v -FROM: parent image. Typically, an “operating” system but you can also use an image of other parties as a starting point. This instruction creates the base layer. +The **FROM** statement describes the parent image. Typically, an 'operating' system but you can also use an image of other parties as a starting point. This instruction creates the base layer. +```sh FROM ubuntu:18.04 +``` Recommendation: pin the version of the OS of the base layer @@ -50,43 +53,80 @@ RUN: the command to execute inside the image filesystem. Think about it this way: every RUN line is essentially what you would run to install programs on a freshly installed Ubuntu OS. This command will be executed as root in the container. +```sh RUN apt install wget +``` A basic recipe: +```sh title="Dockerfile" FROM ubuntu:18.04 RUN apt update && apt -y upgrade RUN apt install -y wget +``` ### Anatomy of the commands -Building Docker image +**Building Docker image** -Implicitly looks for a Dockerfile file in the current directory: +The build command implicitly looks for a file named Dockerfile in the current directory: +```sh docker build . + +# or by specifying the exact file name + docker build --file Dockerfile . -Syntax: –file / -f -. stands for the context (in this case, current directory) of the build process. This makes sense if copying files from filesystem, for instance. IMPORTANT: Avoid contexts (directories) overpopulated with files (even if not actually used in the recipe). +``` + +**Syntax**: -file / -f + +. stands for the context (in this case, current directory) of the build process. This makes sense if copying files from filesystem, for instance. + +!!! info + + Avoid contexts (directories) overpopulated with files (even if not actually used in the recipe). + You can define a specific name for the image during the build process. -Syntax: -t imagename:tag. If not defined :tag default is latest. + +**Syntax**: -t imagename:tag. If not defined :tag default is latest. + +```sh docker build -t mytestimage:v1 . -The last line of installation should be Successfully built …: then you are good to go. +``` + +Once the build process is finished, The last line of output should be `Successfully built ... `. Then you are good to go. + +As next step, we will check with the command `docker images` that you see the newly built image in the list of images. + +TODO: add output of the command as screenshot -Check with docker images that you see the newly built image in the list… -Then let’s check the ID of the image and run it! +```sh docker images +``` +Then let’s check the ID of the image and run it later. But right now, we investigate some additional statements for the recipes! Additional statements for the Dockerfile TODO: add table with following content: -| command | what does it do? | Example | | | -|---------|----------------------------------|-------------------------------------------------------|---|---| -| LABEL | Who is maintaining the container | LABEL maintainer=”your name ” | | | -| | | | | | -| | | | | | +| command | what does it do? | Example | +|---------|----------------------------------|-------------------------------------------------------| +| LABEL | Who is maintaining the container image | LABEL maintainer=”your name ” | +| WORKDIR | all subsequent actions will be executed in that working directory. | WORKDIR ~ | +| COPY | lets you copy a local file or directory from your host (the machine from which you are building the image) | COPY ~/.bashrc . # COPY source destination | +| ADD | same, but ADD works also for URLs, and for .tar archives that will be automatically extracted upon being copied. | | +| ARG | available only while the image is built | | +| ENV | available for the future running containers | | +| ENTRYPOINT | The ENTRYPOINT specifies a command that will always be executed when the container starts. | | +| CMD | The CMD specifies arguments that will be fed to the ENTRYPOINT. | | + +**Further readings** + +Difference between ADD and COPY explained [here](https://stackoverflow.com/questions/24958140/what-is-the-difference-between-the-copy-and-add-commands-in-a-dockerfile) and [here](https://nickjanetakis.com/blog/docker-tip-2-the-difference-between-copy-and-add-in-a-dockerile). + +Difference between ARG and ENV explained [here](https://vsupalov.com/docker-arg-vs-env/). ### A more complex recipe From 37fd86c0eb9105b794103c38533bfa3749a1313d Mon Sep 17 00:00:00 2001 From: Alexander Botzki Date: Mon, 5 Jun 2023 12:16:01 +0200 Subject: [PATCH 3/4] add parts on volumes --- docs/chapters/chapter_02.md | 81 ++++++++++++++++++++++++++----------- 1 file changed, 58 insertions(+), 23 deletions(-) diff --git a/docs/chapters/chapter_02.md b/docs/chapters/chapter_02.md index 211f41d..4081dfa 100644 --- a/docs/chapters/chapter_02.md +++ b/docs/chapters/chapter_02.md @@ -109,7 +109,7 @@ Then let’s check the ID of the image and run it later. But right now, we inves Additional statements for the Dockerfile -TODO: add table with following content: +TODO: refine table with following content: | command | what does it do? | Example | |---------|----------------------------------|-------------------------------------------------------| @@ -131,6 +131,10 @@ Difference between ARG and ENV explained [here](https://vsupalov.com/docker-arg- ### A more complex recipe A more complex recipe (save it in a text file named Dockerfile: + +TODO: check this part once R/Python scripts are available + +```sh title="Dockerfile" FROM ubuntu:18.04 LABEL @@ -141,67 +145,98 @@ RUN apt-get install -y wget ENTRYPOINT ["/usr/bin/wget"] CMD ["https://cdn.wp.nginx.com/wp-content/uploads/2016/07/docker-swarm-hero2.png"] +``` - -Tips for Docker files +**Tips for Docker files** -You should try to separate the Dockerfile into as many stages as possible, because this will allow for better caching -apt-get: -You must run apt-get update and apt-get install in the same command, otherwise you will encounter caching issues -Remember to use apt-get install -y, because you will have no control over the process while it’s building +You should try to separate the Dockerfile into as many stages as possible, because this will allow for better caching. +For example for `apt-get`: -Useful resources: +You must run apt-get update and apt-get install in the same command, otherwise you will encounter caching issues. +Remember to use apt-get install -y, because you will have no control over the process while it’s building. + + +**Useful resources** [Dockerfile reference](https://docs.docker.com/engine/reference/builder/) [Best practices](https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1008316) [Ten simple rules for writing Dockerfiles for reproducible data science](https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1008316) -???? difficult examples from BioInformatics ???? see Biocontainers community +TODO: add exercises difficult examples from BioInformatics ???? see Biocontainers community ### Running our Docker container Now we want to use what is inside the image. -docker run creates a fresh container (active instance of the image) from a Docker (static) image, and runs it. + +`docker run` creates a fresh container (active instance of the image) from a Docker (static) image, and runs it. The format is: + +```sh docker run [docker options] [image arguments] +``` + This means that arguments that affect the way Docker runs must always go before the image name, but arguments that are passed to the image itself must go after the image name. + +```sh docker run ubuntu:18.04 /bin/ls +``` -TODO: add command which is from the example we use here +TODO: add command which is from the built container we use above -Note: What happens if you execute ls in your current working directory: is the result the same? +TODO: add command which is from the example we use in the current R/Python scripts -You can execute any program/command that is stored inside the image. -docker run ubuntu:18.04 /bin/whoami -docker run ubuntu:18.04 cat /etc/issue - +**Exercise:** What happens if you execute ls in your current working directory: is the result the same? + +!!! info + You can execute any program/command that is stored inside the image. + + ```sh + docker run ubuntu:18.04 /bin/whoami + docker run ubuntu:18.04 cat /etc/issue + ``` + +??? done "Answer" + Anything surprising happened? -List running containers: +**List running containers** + +```sh docker ps +``` + List all containers (whether they are running or not): + +```sh docker ps -a +``` -The IDs that are shown can be useful for other docker commands like docker stop and docker exec +The IDs that are shown can be useful for other docker commands like `docker stop` and `docker exec`. -Volumes +### Volumes Docker containers are fully isolated. It is necessary to mount volumes in order to handle input/output files. -By default, Docker containers cannot access data on the host system. This means -You can’t use host data in your containers -All data stored in the container will be lost when the container exits +By default, Docker containers cannot access data on the host system. This means you cannot use host data in your containers. All data stored in the container will be lost when the container exits + +TODO: check about mount bind statements + You can solve this in two ways: + -v /path/in/host:/path/in/container: This bind mounts a host file or directory into the container. Writes to one will affect the other. Note that both paths have to be absolute paths, so you often want to use`pwd`/some/path + -v volume_name:/path/in/container. This mounts a named volume into the container, which will live separately from the rest of your files. This is preferred, unless you need to access or edit the files from the host. + +```sh mkdir datatest touch datatest/test docker run --detach --volume $(pwd)/datatest:/scratch --name fastqc_container biocontainers/fastqc:v0.11.9_cv7 tail -f /dev/null docker exec -ti fastqc_container /bin/bash > ls -l /scratch > exit +``` -TODO: Insert example exercise +TODO: Insert example exercises ### Container registries (e.g. Docker Hub) From 25e24b2e0f79a9be5a3fade15bc73d1577e9d247 Mon Sep 17 00:00:00 2001 From: Alexander Botzki Date: Wed, 2 Aug 2023 19:38:22 +0200 Subject: [PATCH 4/4] add image chapter_02 --- docs/assets/images/6090-g1689.png | Bin 0 -> 54774 bytes docs/chapters/chapter_02.md | 63 +++++++++++++----------------- 2 files changed, 27 insertions(+), 36 deletions(-) create mode 100644 docs/assets/images/6090-g1689.png diff --git a/docs/assets/images/6090-g1689.png b/docs/assets/images/6090-g1689.png new file mode 100644 index 0000000000000000000000000000000000000000..18e4db6a43139fc513c9af6506edfcd2942159b4 GIT binary patch literal 54774 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