Skip to content

Commit

Permalink
differences for PR #253
Browse files Browse the repository at this point in the history
  • Loading branch information
actions-user committed Sep 16, 2024
1 parent d24e49d commit 1c026b1
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 31 deletions.
Empty file removed data/.gitkeep
Empty file.
Empty file removed fig/.gitkeep
Empty file.
Empty file removed files/.gitkeep
Empty file.
48 changes: 18 additions & 30 deletions introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,41 +90,21 @@ 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*.
<https://www.docker.com/resources/what-container/>

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*.

::::::::::::::::::::::::::::::::::::::::: callout

Expand All @@ -143,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.

## 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
for a container. The container image has all the required information to start
Expand Down
2 changes: 1 addition & 1 deletion md5sum.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"config.yaml" "54be1fabc599404a592c83552a49916f" "site/built/config.yaml" "2024-07-26"
"index.md" "16a0cc69e6e31090b65bec6484cdf513" "site/built/index.md" "2024-08-16"
"links.md" "00995287cb95631827a4f30cbe5a7722" "site/built/links.md" "2024-08-16"
"episodes/introduction.md" "fbd6c719d897bfa342d976928b942d56" "site/built/introduction.md" "2024-08-01"
"episodes/introduction.md" "e1c010aeee715ad094a1267009200e4f" "site/built/introduction.md" "2024-09-16"
"episodes/meet-docker.md" "36a6daa2e4727a8ce88db8a4a1a0fa88" "site/built/meet-docker.md" "2024-08-01"
"episodes/running-containers.md" "4bd40434e9fee516256b848e2a423f5a" "site/built/running-containers.md" "2024-06-27"
"episodes/managing-containers.md" "cd974b695f6fa04b3042765a827df552" "site/built/managing-containers.md" "2024-06-27"
Expand Down

0 comments on commit 1c026b1

Please sign in to comment.