Skip to content

Commit dfad6b7

Browse files
authored
Revise Apptainer introduction and usage sections
Updated the introduction to Apptainer, including sections on accessibility, creating containers, and comparing Apptainer with Docker.
1 parent 4d1ab4b commit dfad6b7

1 file changed

Lines changed: 22 additions & 70 deletions

File tree

docs/hpc/07_containers/01_intro.md

Lines changed: 22 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -10,94 +10,46 @@ There are multiple reasons to use Apptainer on the HPC clusters:
1010
- **Security**: Apptainer provides a layer of security as it does not require any root access on our clusters. This makes it safer against malware and bad scripts that might jeopardize the outer system. Thus we only support Apptainer on our clusters (there are not other options such as Kubernetes or Docker on our clusters right now).
1111
- **Containerization**: Apptainer will run all your images (packaged and prebuilt programs) inside of its containers, each container works like a small vm. They contain all the required environment and files of a single Linux kernel and you don't have to worry about any pre-installation issues.
1212
- **Inter-connectivity**: Containers are able to talk to each other, as well as the home system, so while each container has its own small space, they are still a part of a big interconnected structure. Thus enabling you to connect your programs.
13-
- **Accessibility**: Probably the most important feature of all, Apptainer allows you to run your program in 2 to 3 simple steps, as shown below.
13+
- **Accessibility**: Probably the most important feature of all, Apptainer allows you to run your program in 2 to 3 simple steps.
1414

15-
## How to Run an Apptainer Container
16-
There are 3 steps to run an Apptainer container on our clusters:
17-
18-
:::warning
19-
Running containers on login nodes is not encouraged, as processes may be terminated due to resource limits; please use compute nodes instead.
20-
:::
21-
22-
### 1. Pull an Image from Docker Hub
23-
```sh
24-
$ apptainer pull docker://godlovedc/lolcow
25-
# image name can be for example docker://godlovedc/lolcow
26-
```
27-
28-
![apptainer1](./static/apptainer1.png)
15+
## How to Create an Apptainer Container
16+
So what if you want to create an image from your container and save it for a rainy day?
2917

30-
### 2. Build the Image (Optional)
31-
```sh
32-
$ apptainer build <a name of your choosing>.sif <image name>
33-
# the image name can be a local image or an image from a hub
34-
```
18+
Apptainer documentation has [instructions for building containers](https://apptainer.org/docs/user/latest/build_a_container.html) for your convenience. Please read through them to create your own Apptainer container and package it into an image!
3519

36-
Building an image is optional for most use cases. In many cases, users can directly run containers pulled from Docker Hub without building a local image.
20+
Similarly, you can build docker containers using the information from [Docker's documentation](https://docs.docker.com/get-started/docker-concepts/building-images/). You can then upload them onto docker hub and pull them using Apptainer. Apptainer supports all Docker images!
3721

38-
![apptainer2](./static/apptainer2.png)
22+
## Apptainer vs Docker
23+
Why are there so many mentions of Docker? The reason is that Apptainer is essentially compatible with Docker and you don't need to relearn Apptainer if you already have experience with Docker. Now let's get into some pros and cons between the two programs.
24+
- Docker is more accepted commercially than Apptainer. You can download and run Docker on your own computer with any operating system and build containers with ease while Apptainer is used in a more academic setting. Apptainer primarily supports Linux environments and is designed for HPC use cases.
25+
- However, Docker requires root or admin access for the operating system it deploys on, and our clusters do not offer that access to any software that requires this criteria. Thus Docker is not available on the clusters and Apptainer is.
26+
- A silver lining in all of this is that Apptainer fully supports Docker images and you can do everything in Docker and push your image to Docker Hub and pull them on the clusters. Thus making sure that you don't need to relearn workflows and can just use it through the simplest of commands in this documentation.
3927

40-
You can now run your container using the built image.
28+
## Getting Started
29+
### Common Commands
30+
Pull an image from Docker Hub:
4131

42-
### 3. Run Container
4332
```sh
44-
# this is one way of running a container
45-
$ apptainer run <image name>.sif
46-
# this is another way to run a container
47-
$ ./<image name>.sif
33+
apptainer pull docker://<image>
4834
```
4935

50-
:::info
51-
Apptainer images are immutable by default. You can mount an writable overlay file and edit files within the overlay.
52-
:::
53-
54-
running this would yield a menu for output:
55-
56-
![apptainer3](./static/apptainer3.png)
57-
58-
#### Enter Container
36+
Run a container:
5937
```sh
60-
apptainer shell <image name>.sif
61-
# after this step, you will be going into the container and start your programming
38+
apptainer run <image>.sif
6239
```
6340

64-
![apptainer4](./static/apptainer4.png)
65-
66-
:::tip
67-
68-
Run commands outside the container
69-
70-
You can run commands for the container using exec arguments without actually going into the container
71-
41+
Execute a command inside a container:
7242
```sh
73-
$ apptainer exec <image name>.sif <commands>
74-
# adding commands to the back will return the display result of these commands in the container without actually going into the container
43+
apptainer exec <image>.sif <command>
7544
```
76-
:::
77-
78-
### Using `fakeroot`
79-
80-
In some cases, you may need elevated permissions inside the container to install software or modify system files. Apptainer provides a `--fakeroot` option that allows you to run commands inside the container with root-like privileges, without requiring actual root access on the system.
8145

46+
Start an interactive shell:
8247
```sh
83-
$ apptainer exec --fakeroot <image name>.sif <commands>
48+
apptainer shell <image>.sif
8449
```
8550

86-
That's it! Now you're good to go and can just use these simple steps to run Apptainer images and run your programs.
51+
For a step-by-step tutorial on running containers on Torch, see:
52+
[Getting Started with Apptainer on Torch](../getting_started_with_apptainer_on_torch/)
8753

8854
For full information and documentation please visit [Apptainer](https://apptainer.org/).
89-
90-
## How to Create an Apptainer Container
91-
So what if you want to create an image from your container and save it for a rainy day?
92-
93-
Apptainer documentation has [instructions for building containers](https://apptainer.org/docs/user/latest/build_a_container.html) for your convenience. Please read through them to create your own Apptainer container and package it into an image!
94-
95-
Similarly, you can build docker containers using the information from [Docker's documentation](https://docs.docker.com/get-started/docker-concepts/building-images/). You can then upload them onto docker hub and pull them using Apptainer. Apptainer supports all Docker images!
96-
97-
## Apptainer vs Docker
98-
Why are there so many mentions of Docker? The reason is that Apptainer is essentially compatible with Docker and you don't need to relearn Apptainer if you already have experience with Docker. Now let's get into some pros and cons between the two programs.
99-
- Docker is more accepted commercially than Apptainer. You can download and run Docker on your own computer with any operating system and build containers with ease while Apptainer is used in a more academic setting. Apptainer primarily supports Linux environments and is designed for HPC use cases.
100-
- However, Docker requires root or admin access for the operating system it deploys on, and our clusters do not offer that access to any software that requires this criteria. Thus Docker is not available on the clusters and Apptainer is.
101-
- A silver lining in all of this is that Apptainer fully supports Docker images and you can do everything in Docker and push your image to Docker Hub and pull them on the clusters. Thus making sure that you don't need to relearn workflows and can just use it through the simplest of commands in this documentation.
102-
10355
Good luck with Apptainer, and have fun!

0 commit comments

Comments
 (0)