From 1e65bdf7640a3b0b83b018ac55cdaa4bfa09f346 Mon Sep 17 00:00:00 2001 From: Michael Milton Date: Mon, 16 Sep 2024 17:08:55 +1000 Subject: [PATCH 1/4] Define docker --- episodes/introduction.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/episodes/introduction.md b/episodes/introduction.md index 01c97599..29fff4c4 100644 --- a/episodes/introduction.md +++ b/episodes/introduction.md @@ -117,6 +117,12 @@ What if, instead, you could have another independent filesystem and running oper Or, imagine you have two tools you want to use in your groundbreaking research on cat memes: `PurrLOLing`, a tool that does AMAZINGLY well at predicting the best text for a meme based on the cat species and `WhiskerSpot`, the only tool available for identifying cat species from images. You want to send cat pictures to `WhiskerSpot`, and then send the species output to `PurrLOLing`. But there's a problem: `PurrLOLing` only works on Ubuntu and `WhiskerSpot` is only supported for OpenSUSE so you can't have them on the same system! Again, we really want another filesystem (or two) on our computer that we could use to chain together `WhiskerSpot` and `PurrLOLing` in a **computational pipeline**... +More concretely, Docker Inc use the following definition of a container: + +> A container is a standard unit of software that packages up code and all its dependencies so the application runs reliably from one computing environment to another. + + + Container systems, like Docker, are special programs on your computer that make it possible! The term container can be usefully considered with reference to shipping containers. Before shipping containers were developed, packing and unpacking From f6bfd4f8581814b5795e309351ffe20f83986e30 Mon Sep 17 00:00:00 2001 From: Michael Milton Date: Mon, 16 Sep 2024 17:23:55 +1000 Subject: [PATCH 2/4] Remove some lengthy explanations --- episodes/introduction.md | 41 ++++++++++------------------------------ 1 file changed, 10 insertions(+), 31 deletions(-) diff --git a/episodes/introduction.md b/episodes/introduction.md index 29fff4c4..47a293ef 100644 --- a/episodes/introduction.md +++ b/episodes/introduction.md @@ -90,47 +90,26 @@ Thankfully there are ways to get underneath (a lot of) this mess: containers to the rescue! Containers provide a way to package up software dependencies and access to resources such as files and communications networks in a uniform manner. -## What is a Container? What is Docker? +## What is a Container? -[Docker][Docker] is a tool that allows you to build what are called **containers**. It's -not the only tool that can create containers, but is the one we've chosen for -this workshop. But what *is* a container? - -To understand containers, let's first talk briefly about your computer. - -Your computer has some standard pieces that allow it to work -- often what's -called the hardware. One of these pieces is the CPU or processor; another is -the amount of memory or RAM that your computer can use to store information -temporarily while running programs; another is the hard drive, which can store -information over the long-term. All these pieces work together to do the -computing of a computer, but we don't see them because they're hidden from view (usually). - -Instead, what we see is our desktop, program windows, different folders, and -files. These all live in what's called the filesystem. Everything on your computer -- programs, -pictures, documents, the operating system itself -- lives somewhere in the filesystem. - -NOW, imagine you want to install some new software but don't want to take the chance -of making a mess of your existing system by installing a bunch of additional stuff -(libraries/dependencies/etc.). +Imagine you want to install some research software but don't want to take the chance of making a mess of your existing system by installing a bunch of additional stuff (libraries/dependencies/etc.). You don't want to buy a whole new computer because it's too expensive. What if, instead, you could have another independent filesystem and running operating system that you could access from your main computer, and that is actually stored within this existing computer? -Or, imagine you have two tools you want to use in your groundbreaking research on cat memes: `PurrLOLing`, a tool that does AMAZINGLY well at predicting the best text for a meme based on the cat species and `WhiskerSpot`, the only tool available for identifying cat species from images. You want to send cat pictures to `WhiskerSpot`, and then send the species output to `PurrLOLing`. But there's a problem: `PurrLOLing` only works on Ubuntu and `WhiskerSpot` is only supported for OpenSUSE so you can't have them on the same system! Again, we really want another filesystem (or two) on our computer that we could use to chain together `WhiskerSpot` and `PurrLOLing` in a **computational pipeline**... - More concretely, Docker Inc use the following definition of a container: > A container is a standard unit of software that packages up code and all its dependencies so the application runs reliably from one computing environment to another. -Container systems, like Docker, are special programs on your computer that make it possible! -The term container can be usefully considered with reference to shipping -containers. Before shipping containers were developed, packing and unpacking -cargo ships was time consuming and error prone, with high potential for -different clients' goods to become mixed up. Just like shipping containers keep things -together that should stay together, software containers standardize the description and -creation of a complete software system: you can drop a container into any computer with -the container software installed (the 'container host'), and it should *just work*. +The term container can be usefully considered with reference to shipping containers. +Before shipping containers were developed, packing and unpacking cargo ships was time consuming and error prone, with high potential for different clients' goods to become mixed up. +Just like shipping containers keep things together that should stay together, software containers standardize the description and creation of a complete software system: you can drop a container into any computer with the container software installed (the 'container host'), and it should *just work*. + +## What is Docker? + +[Docker][Docker] is a tool that allows you to build and run containers. +It's not the only tool that can create containers, but is the one we've chosen for this workshop. ::::::::::::::::::::::::::::::::::::::::: callout From 3609c63d50f0d896c30c3b73f8509870c1c98b6d Mon Sep 17 00:00:00 2001 From: Michael Milton Date: Mon, 16 Sep 2024 17:31:07 +1000 Subject: [PATCH 3/4] Move virtualisation callout back to the containers section, separate Images into new section --- episodes/introduction.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/episodes/introduction.md b/episodes/introduction.md index 47a293ef..5b08dc3b 100644 --- a/episodes/introduction.md +++ b/episodes/introduction.md @@ -106,11 +106,6 @@ The term container can be usefully considered with reference to shipping contain Before shipping containers were developed, packing and unpacking cargo ships was time consuming and error prone, with high potential for different clients' goods to become mixed up. Just like shipping containers keep things together that should stay together, software containers standardize the description and creation of a complete software system: you can drop a container into any computer with the container software installed (the 'container host'), and it should *just work*. -## What is Docker? - -[Docker][Docker] is a tool that allows you to build and run containers. -It's not the only tool that can create containers, but is the one we've chosen for this workshop. - ::::::::::::::::::::::::::::::::::::::::: callout ## Virtualization @@ -128,6 +123,14 @@ flavour of Linux + the filesystem inside. :::::::::::::::::::::::::::::::::::::::::::::::::: + +## What is Docker? + +[Docker][Docker] is a tool that allows you to build and run containers. +It's not the only tool that can create containers, but is the one we've chosen for this workshop. + +## Containers and Images + One final term: while the **container** is an alternative filesystem layer that you can access and run from your computer, the **container image** is the 'recipe' or template for a container. The container image has all the required information to start From 7b7a574018507e8d8f39bbd5d657b341e6680016 Mon Sep 17 00:00:00 2001 From: Michael Milton Date: Mon, 16 Sep 2024 17:31:31 +1000 Subject: [PATCH 4/4] Rename images section to "Container Images" --- episodes/introduction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/episodes/introduction.md b/episodes/introduction.md index 5b08dc3b..11bda2fd 100644 --- a/episodes/introduction.md +++ b/episodes/introduction.md @@ -129,7 +129,7 @@ flavour of Linux + the filesystem inside. [Docker][Docker] is a tool that allows you to build and run containers. It's not the only tool that can create containers, but is the one we've chosen for this workshop. -## Containers and Images +## Container Images One final term: while the **container** is an alternative filesystem layer that you can access and run from your computer, the **container image** is the 'recipe' or template