You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/tutorials/development_containers/index.md
+12-8Lines changed: 12 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -29,9 +29,13 @@ output:
29
29
You might have heard about "containerization" with [**Docker**](https://docs.docker.com).
30
30
Docker has been labeled "the *Holy Grail* of reproducibility" in [The Open Science Manual by Claudio Zandonella Callegher and Davide Massidda (2023)](https://arca-dpss.github.io/manual-open-science/docker-chapter.html).
31
31
Although containerization is an immensely useful Open Science tool worth striving for, the *Holy Grail* is an inaccurate metaphor, because
32
-
(i) Unlike The Grail, Docker is easy to find and accessible.
33
-
(ii) Docker alone does not make a reproducible workflow; some of its capability is occasionally confused with package version management.
34
-
(iii) Docker has issues, some of them mitigated by configuration adjustment or switching to "Podman".
32
+
33
+
- (i) Unlike The Grail, Docker is easy to find and accessible.
34
+
- (ii) Docker alone does not make a reproducible workflow; some of its capability is occasionally confused with package version management.
35
+
- (iii) Docker has issues, some of them mitigated by configuration adjustment or switching to "Podman".
36
+
37
+
Time to explore what containers really are, and what they are not.
38
+
35
39
36
40
# Overview
37
41
@@ -47,15 +51,15 @@ or store and publish a whole image right away.
47
51
In this notebook, you will find **installation instructions**, <ahref="#sec-commands"class="quarto-xref"><b>useful commands</b></a>, references, and a loose assembly of general and almost philosophical topics to prime you on the **complications and misconceptions** surrounding containerization.
48
52
49
53
There are numerous useful build instructions and container images already out there, which you can **simply `pull` and `run`**.
50
-
This is an easy, entry level application of container software like Docker, [covered in an introductory tutorial](../../../tutorials/TODO).
54
+
This is an easy, entry level application of container software like Docker, [covered in an introductory tutorial](../../tutorials/development_containers_run).
51
55
52
-
A second step is to set up and deploy a **self-`build` custom container** I demonstrate step-by-step [in a slightly more advanced tutorial](../../../tutorials/TODO).
56
+
A second step is to set up and deploy a **self-`build` custom container** I demonstrate step-by-step [in a slightly more advanced tutorial](../../tutorials/development_containers_build).
53
57
This is intended to be a rather general test case, enabling you to later configure more specific container solutions for your own purpose.
54
58
For example, you will learn how to spin up an existing `rocker/rstudio` container, and even modify it with additional system components and libraries.
55
59
56
60
For relevant INBO-specific use cases, make sure to [check out the `containbo` repository](https://github.com/inbo/containbo) which documents **even more tipps and tricks** assembled during my humble (but mostly succesful) attempts to get INBO R packages to run in a container environment.
57
61
58
-
I also present **Podman** as a [full replacement for Docker](../../../tutorials/TODO), and recommend to give it a try.
62
+
I also present **Podman** as a [full replacement for Docker](../../tutorials/development_containers_podman), and recommend to give it a try.
59
63
60
64
On Windows, installation, configuration, and management of containers runs via the `docker desktop` app.
61
65
However, this series of tutorials also covers (and in fact focuses on) the terminal-centered steps to be executed on a Linux computer or within a WSL.
@@ -173,7 +177,7 @@ docker --version
173
177
174
178
Congratulations: now the fun starts!
175
179
176
-
With docker installed, the next step is to run a container image which someone else has prepared and hosted online, [which you can read about in the next tutorial](../../../tutorials/TODO).
180
+
With docker installed, the next step is to run a container image which someone else has prepared and hosted online, [which you can read about in the next tutorial](../../tutorials/development_containers_run).
177
181
178
182
# The Holy Grail?
179
183
@@ -253,7 +257,7 @@ Historically, Docker could not run "rootless", i.e. without elevated privileges
253
257
[This seems to have changed](https://docs.docker.com/engine/security/rootless), according to Docker.
254
258
Some caution is still warranted: the setup procedure requires downloading and running shell scripts (which must be checked); the deamon still builds on `systemd` (*usually* root level); some functionality is limited.
255
259
256
-
On the other hand, there is Podman (cf. the [Podman tutorial](../../../tutorials/TODO)).
260
+
On the other hand, there is Podman (cf. the [Podman tutorial](../../tutorials/development_containers_podman)).
257
261
It *used to* require almost the same extra steps as the `docker-rootless` to work rootless, but we found that these requirements are now met per default.
258
262
It seems that, at the time of writing, Docker and Podman have identical capabilities in terms of rootless containerization.
259
263
The remaining difference is that Podman seems to have more sensible default settings.
Copy file name to clipboardExpand all lines: content/tutorials/development_containers/index.qmd
+11-9Lines changed: 11 additions & 9 deletions
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,5 @@
1
1
---
2
-
title: "Containers with Docker and Podman"
2
+
title: "Containers: An Overview"
3
3
description: "Introduction to containerization and the practical use of Docker-like tools."
4
4
date: "2025-02-21"
5
5
authors: [falkmielke]
@@ -28,10 +28,12 @@ output:
28
28
You might have heard about "containerization" with [**Docker**](https://docs.docker.com).
29
29
Docker has been labeled "the *Holy Grail* of reproducibility" in [The Open Science Manual by Claudio Zandonella Callegher and Davide Massidda (2023)](https://arca-dpss.github.io/manual-open-science/docker-chapter.html).
30
30
Although containerization is an immensely useful Open Science tool worth striving for, the *Holy Grail* is an inaccurate metaphor, because
31
-
(i) Unlike The Grail, Docker is easy to find and accessible.
32
-
(ii) Docker alone does not make a reproducible workflow; some of its capability is occasionally confused with package version management.
33
-
(iii) Docker has issues, some of them mitigated by configuration adjustment or switching to "Podman".
34
31
32
+
- (i) Unlike The Grail, Docker is easy to find and accessible.
33
+
- (ii) Docker alone does not make a reproducible workflow; some of its capability is occasionally confused with package version management.
34
+
- (iii) Docker has issues, some of them mitigated by configuration adjustment or switching to "Podman".
35
+
36
+
Time to explore what containers really are, and what they are not.
35
37
36
38
# Overview
37
39
@@ -49,18 +51,18 @@ In this notebook, you will find **installation instructions**, [**useful command
49
51
50
52
51
53
There are numerous useful build instructions and container images already out there, which you can **simply `pull` and `run`**.
52
-
This is an easy, entry level application of container software like Docker, [covered in an introductory tutorial](/tutorials/TODO).
54
+
This is an easy, entry level application of container software like Docker, [covered in an introductory tutorial](../../tutorials/development_containers_run).
53
55
54
56
55
-
A second step is to set up and deploy a **self-`build` custom container** I demonstrate step-by-step [in a slightly more advanced tutorial](/tutorials/TODO).
57
+
A second step is to set up and deploy a **self-`build` custom container** I demonstrate step-by-step [in a slightly more advanced tutorial](../../tutorials/development_containers_build).
56
58
This is intended to be a rather general test case, enabling you to later configure more specific container solutions for your own purpose.
57
59
For example, you will learn how to spin up an existing `rocker/rstudio` container, and even modify it with additional system components and libraries.
58
60
59
61
60
62
For relevant INBO-specific use cases, make sure to [check out the `containbo` repository](https://github.com/inbo/containbo) which documents **even more tipps and tricks** assembled during my humble (but mostly succesful) attempts to get INBO R packages to run in a container environment.
61
63
62
64
63
-
I also present **Podman** as a [full replacement for Docker](/tutorials/TODO), and recommend to give it a try.
65
+
I also present **Podman** as a [full replacement for Docker](../../tutorials/development_containers_podman), and recommend to give it a try.
64
66
65
67
66
68
On Windows, installation, configuration, and management of containers runs via the `docker desktop` app.
@@ -192,7 +194,7 @@ docker --version
192
194
Congratulations: now the fun starts!
193
195
194
196
195
-
With docker installed, the next step is to run a container image which someone else has prepared and hosted online, [which you can read about in the next tutorial](/tutorials/TODO).
197
+
With docker installed, the next step is to run a container image which someone else has prepared and hosted online, [which you can read about in the next tutorial](../../tutorials/development_containers_run).
196
198
197
199
198
200
# The Holy Grail?
@@ -282,7 +284,7 @@ Historically, Docker could not run "rootless", i.e. without elevated privileges.
282
284
Some caution is still warranted: the setup procedure requires downloading and running shell scripts (which must be checked); the deamon still builds on `systemd` (*usually* root level); some functionality is limited.
283
285
284
286
285
-
On the other hand, there is Podman (cf. the [Podman tutorial](/tutorials/TODO)).
287
+
On the other hand, there is Podman (cf. the [Podman tutorial](../../tutorials/development_containers_podman)).
286
288
It *used to* require almost the same extra steps as the `docker-rootless` to work rootless, but we found that these requirements are now met per default.
287
289
It seems that, at the time of writing, Docker and Podman have identical capabilities in terms of rootless containerization.
288
290
The remaining difference is that Podman seems to have more sensible default settings.
Copy file name to clipboardExpand all lines: content/tutorials/development_containers_build/index.md
+11-7Lines changed: 11 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,16 +25,20 @@ output:
25
25
---
26
26
27
27
28
-
By now, you [will have successfully installed](../tutorials/development_containers) Docker or [Podman](../tutorials/development_containers_podman).
29
-
You hopefully succeeded in [running others' containers](../tutorials/development_containers_run), e.g. from a container repository.
28
+
By now, you [will have successfully installed](../../tutorials/development_containers) Docker or [Podman](../../tutorials/development_containers_podman).
29
+
You hopefully succeeded in [running others' containers](../../tutorials/development_containers_run), e.g. from a container repository.
30
30
31
31
Next, it is time to customize your container.
32
32
33
33
To give you a metaphor to work on: imagine you have a nice little DIY project for your garage workshop.
34
34
This time, you would like to build your own [Matryoshka dolls](https://en.wikipedia.org/wiki/Matryoshka_doll) (матрёшка, stacking dolls, a great allegory for recursion).
(Photo by <ahref="https://unsplash.com/@ilmatar?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash">Iza Gawrych</a> on <ahref="https://unsplash.com/photos/a-group-of-blue-and-gold-vases-sitting-on-top-of-a-table-oL3O2PybLoo?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash">Unsplash</a>)
<figcaptionaria-hidden="true">(Photo by <ahref="https://unsplash.com/@ilmatar?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash">Iza Gawrych</a> on <ahref="https://unsplash.com/photos/a-group-of-blue-and-gold-vases-sitting-on-top-of-a-table-oL3O2PybLoo?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash">Unsplash</a>)</figcaption>
39
+
</figure>
40
+
41
+
38
42
39
43
Like all good DIY, you do not fully start from scratch: you start with a blueprint which someone else has created, or general building instructions.
40
44
You usually do not grow your own trees to get the wood, you buy wooden blocks of approximately the right size; neither do you mix you own paint from elemental ingredients, you assemble what others have to offer.
@@ -274,10 +278,10 @@ When designing and building Dockerfiles, you effectively craft your own DIY Matr
274
278
This may involve tinkering, some sawdust will fall off on the sides, but often the end product is quite presentable.
275
279
276
280
And that is one of the main purposes of a custom docker image: you can store a given set of interrelated software building blocks for later use (reproducibility).
277
-
Some of these sets are rather rough, abstract, or general (like the images you get on image repositories, which you can [simply pull and run](../tutorials/development_containers_run)).
281
+
Some of these sets are rather rough, abstract, or general (like the images you get on image repositories, which you can [simply pull and run](../../tutorials/development_containers_run)).
278
282
Others are bespoke, containing exact requirements for a given task.
279
-
Both functions are important building blocks of open science, and I elaborate more about this framework [in the main article on containerization](../tutorials/development_containers).
280
-
Docker is a specific implementation of the container concept, and you might also want to [try out Podman](../tutorials/development_containers_podman) as an alternative.
283
+
Both functions are important building blocks of open science, and I elaborate more about this framework [in the main article on containerization](../../tutorials/development_containers).
284
+
Docker is a specific implementation of the container concept, and you might also want to [try out Podman](../../tutorials/development_containers_podman) as an alternative.
281
285
282
286
Good luck with all your DIY projects, and thank you for reading!
Copy file name to clipboardExpand all lines: content/tutorials/development_containers_build/index.qmd
+5-2Lines changed: 5 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -34,8 +34,11 @@ Next, it is time to customize your container.
34
34
To give you a metaphor to work on: imagine you have a nice little DIY project for your garage workshop.
35
35
This time, you would like to build your own [Matryoshka dolls](https://en.wikipedia.org/wiki/Matryoshka_doll) (матрёшка, stacking dolls, a great allegory for recursion).
(Photo by <ahref="https://unsplash.com/@ilmatar?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash">Iza Gawrych</a> on <ahref="https://unsplash.com/photos/a-group-of-blue-and-gold-vases-sitting-on-top-of-a-table-oL3O2PybLoo?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash">Unsplash</a>)
<figcaptionaria-hidden="true">(Photo by <ahref="https://unsplash.com/@ilmatar?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash">Iza Gawrych</a> on <ahref="https://unsplash.com/photos/a-group-of-blue-and-gold-vases-sitting-on-top-of-a-table-oL3O2PybLoo?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash">Unsplash</a>)</figcaption>
40
+
</figure>
41
+
39
42
40
43
41
44
Like all good DIY, you do not fully start from scratch: you start with a blueprint which someone else has created, or general building instructions.
0 commit comments