Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,075 changes: 1,075 additions & 0 deletions content/courses/fiji-image-processing/fiji-omero/index.md

Large diffs are not rendered by default.

631 changes: 631 additions & 0 deletions content/courses/opencv/index.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Check your rsults by plotting. If you wish, you can use the script contour2d.py
{{< spoiler text="contour2d.py source code" >}}
{{< code-download file="/courses/parallel-computing-introduction/scripts/contour2d.py" lang="python" >}}
{{< /spoiler >}}
<br>

The usage is
```sh
python contour2d.py -r numrows -c numcols basefilename
Expand Down
21 changes: 21 additions & 0 deletions content/notes/containers/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
# Course title, summary, and position.
title: "Introduction to Building and Deploying Containers"
authors: [cag]

# Page metadata.
date: "2023-05-01T00:00:00"
draft: false # Is this a draft? true/false
toc: false # Show table of contents? true/false
type: docs # Do not modify.

# Add menu entry to sidebar.
menu:
containers:
name: Containers
weight: 5
---

You've developed an app and written the paper. Now it's time to deploy the app so the world (and the reviewers) can see how awesome it is. This is Part 1 of a two-part workshop that will cover how to deploy web apps for publication. In Part 1 we will go over how to containerize our apps with Docker and maintain them with GitHub.

<img src="/notes/containers/img/docker.png" alt="docker logo img" /> <img src="/notes/containers/img/github.jpeg" alt="github logo image" width="40%" />
21 changes: 21 additions & 0 deletions content/notes/containers/overview-purpose.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
title: Why Use Containers?
date: "2023-05-01:00:00Z"
draft: false # Is this a draft? true/false
toc: false # Show table of contents? true/false
type: docs # Do not modify.
weight: 20
date: "2023-05-01T00:00:00Z"
menu:
containers:
parent: Containers
---

Have you ever tried using new code or software from an exciting paper you just read, only to end up spending hours figuring out which versions of the dependencies work on your own machine? Containers eliminate that issue altogether!

A container is a single unit of software that contains all the packages and code you need to run an application. Sometimes that application is as small as a single function (like printing 'Hello World!'), and sometimes that application is an entire web app. A container will always run the same, regardless of the host system it runs on--making it the perfect solution for sharing reproducible code.

There are several container technologies out there, but the big ones are Docker and Singularity. Docker is what you will encounter most often in the wild. Singularity (now called Apptainer) is used on HPC systems where most users don't have root access.

<img src="/notes/containers/img/docker.png" alt="docker logo image" />
<img src="/notes/containers/img/apptainer.png" alt="apptainer logo image" />
20 changes: 20 additions & 0 deletions content/notes/containers/overview-services.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
title: Container Services
date: "2023-05-01:00:00Z"
draft: false # Is this a draft? true/false
toc: false # Show table of contents? true/false
type: docs # Do not modify.
weight: 40
date: "2023-05-01T00:00:00Z"
menu:
containers:
parent: Containers
---

Container-based architecture, also known as "microservices," is an approach to designing and running applications as a distributed set of components or layers. Such applications are typically run within containers, made popular in the last few years by Docker.

Containers are portable, efficient, reusable, and contain code and any dependencies in a single package. Containerized services typically run a single process, rather than an entire stack within the same environment. This allows developers to replace, scale, or troubleshoot portions of their entire application at a time.

<img src="/notes/containers/img/microservice-cluster.jpeg" alt="Diagram of multiple containers running separate services in a cluster."/>

Research Computing runs microservices in a clustered orchestration environment that automates the deployment and management of many containers easy and scalable. This cluster has >1000 cores and ~1TB of memory allocated to running containerized services. It also has over 300TB of cluster storage and can attach to project and value storage.
18 changes: 18 additions & 0 deletions content/notes/containers/overview-vms.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
title: Containers vs VMs
date: "2023-05-01:00:00Z"
draft: false # Is this a draft? true/false
toc: false # Show table of contents? true/false
type: docs # Do not modify.
weight: 30
date: "2023-05-01T00:00:00Z"
menu:
containers:
parent: Containers
---

You may be familiar with the virtual machines (VMs), which accomplish the same goal as containers: to create a reproducible and shareable compute environment. The big difference between VMs and containers is that VMs provide their own guest OS, whereas containers don't require an OS and run on the Docker Engine and share the host's OS kernel.

The size of Docker images is usually on the order of tens of MBs, while VMs can be several tens of GBs large.

<img src="/notes/containers/img/container-vs-vm.pbm" alt="Side-by-side comparison of containerized applications (Docker on a host OS) and virtual machines (apps running on guest OSs over a hypervisor)." />
Loading
Loading