aboutsummaryrefslogtreecommitdiff
path: root/reproduce/software/containers/README-docker.md
diff options
context:
space:
mode:
authorMohammad Akhlaghi <mohammad@akhlaghi.org>2025-05-05 21:48:45 +0200
committerMohammad Akhlaghi <mohammad@akhlaghi.org>2025-05-07 21:18:31 +0200
commit2881fc0a6205d593512458c24f3b681d12921005 (patch)
treedae9c18302a0362b2ba8d2d7e67f1c7332266668 /reproduce/software/containers/README-docker.md
parenta1f8947ab7784af4b7e66c617ce19a8bdd9c99ed (diff)
Configuration: basic software build with host GCC 15.1HEADmaneage
Summary: this will not affect already built/configured projects, only improving the portability of future builds. Until this commit, no specific C standard version was given during the build of Basic software (which use the host's c compiler, culminating in the building of GCC within Maneage). On the other hand, GCC 15.1 was recentely released and made available on some operating systems. GCC 15.1 has made C23 its standard C version (from C17), as a result, some of the basic software crashed and didn't allow Maneage to built on those operating systems. With this commit, the '-std=c17' flag has been added to software that crashed when the host GCC was 15.1. Also, they have been grouped with a description of this problem in 'versions.conf' so we check the need for this option in future version updates. In parallel, some minor edits/clarifications were made in the two 'README-apptainer.md' and 'README-docker.md' files to be more useful.
Diffstat (limited to 'reproduce/software/containers/README-docker.md')
-rw-r--r--reproduce/software/containers/README-docker.md43
1 files changed, 32 insertions, 11 deletions
diff --git a/reproduce/software/containers/README-docker.md b/reproduce/software/containers/README-docker.md
index f86dceb..d651e22 100644
--- a/reproduce/software/containers/README-docker.md
+++ b/reproduce/software/containers/README-docker.md
@@ -35,17 +35,20 @@ software environment) to easily move it from one computer to another.
systemctl start docker
```
- 2. Using your favorite text editor, create a `docker-local.sh` in your top
- Maneage directory (as described in the comments at the start of the
- `docker.sh` script in this directory). Just activate `--build-only` on
- the first run so it doesn't go onto doing the analysis and just sets up
- the software environment.
-
- 3. After the setup is complete, run the following command to confirm that
- the `maneage-base` (the OS of the container) and `maneaged` (your
- project's full Maneage'd environment) images are available. If you want
- different names for these images, add the `--project-name` and
- `--base-name` options to the `docker.sh` call.
+ 2. Using your favorite text editor, create a `run.sh` in your top Maneage
+ directory (as described in the comments at the start of the `docker.sh`
+ script in this directory). Just activate `--build-only` on the first
+ run so it doesn't go onto doing the analysis and just sets up the
+ software environment. Set the respective directory(s) based on your
+ filesystem (the software directory is optional). The `run.sh` file name
+ is already in `.gitignore` (because it contains local directories), so
+ Git will ignore it and it won't be committed by mistake.
+
+ 3. After the setup is complete, remove the `--build-only` and run the
+ command below to confirm that `maneage-base` (the OS of the container)
+ and `maneaged` (your project's full Maneage'd environment) images are
+ available. If you want different names for these images, add the
+ `--project-name` and `--base-name` options to the `docker.sh` call.
```shell
docker image list
@@ -85,6 +88,24 @@ image into it.
Below are some useful Docker usage scenarios that have proved to be
relevant for us in Maneage'd projects.
+### Saving and loading an image as a file
+
+Docker keeps its images in hard to access (by humans) location on the
+operating system. Very much like Git, but with much less elegance: the
+place is shared by all users and projects of the system. So they are not
+easy to archive for usage on another system at a low-level. But it does
+have an interface (`docker save`) to copy all the relevant files within an
+image into a tar ball that you can archive externally. There is also a
+separate interface to load the tarball back into docker (`docker load`).
+
+Both of these have been implemented as the `--image-file` option of the
+`docker.sh` script. If you want to save your Maneage'd image into an image,
+simply give the tarball name to this option. Alternatively, if you already
+have a tarball and want to load it into Docker, give it to this option once
+(until you "clean up", as explained below). In fact, docker images take a
+lot of space and it is better to "clean up" regularly. And the only way you
+can clean up safely is through saving your needed images as a file.
+
### Cleaning up
Docker has stored many large files in your operating system that can drain