aboutsummaryrefslogtreecommitdiff
path: root/reproduce/software/containers/README-docker.md
diff options
context:
space:
mode:
Diffstat (limited to 'reproduce/software/containers/README-docker.md')
-rw-r--r--reproduce/software/containers/README-docker.md201
1 files changed, 0 insertions, 201 deletions
diff --git a/reproduce/software/containers/README-docker.md b/reproduce/software/containers/README-docker.md
deleted file mode 100644
index d651e22..0000000
--- a/reproduce/software/containers/README-docker.md
+++ /dev/null
@@ -1,201 +0,0 @@
-# Maneage'd projects in Docker
-
-Copyright (C) 2021-2025 Mohammad Akhlaghi <mohammad@akhlaghi.org>\
-See the end of the file for license conditions.
-
-For an introduction on containers, see the "Building in containers" section
-of the `README.md` file within the top-level directory of this
-project. Here, we focus on Docker with a simple checklist on how to use the
-`docker.sh` script that we have already prepared in this directory for easy
-usage in a Maneage'd project.
-
-
-
-
-
-## Building your Maneage'd project in Docker
-
-Through the steps below, you will create a Docker image that will only
-contain the software environment and keep the project source and built
-analysis files (data and PDF) on your host operating system. This enables
-you to keep the size of the image to a minimum (only containing the built
-software environment) to easily move it from one computer to another.
-
- 0. Add your user to the `docker` group: `usermod -aG docker
- USERNAME`. This is only necessary once on an operating system.
-
- 1. Start the Docker daemon (root permissions required). If the operating
- system uses systemd you can use the command below. If you want the
- Docker daemon to be available after a reboot also (so you don't have to
- restart it after turning off your computer), run this command again but
- replacing `start` with `enable` (this is not recommended if you don't
- regularly use Docker: it will slow the boot time of your OS).
-
- ```shell
- systemctl start docker
- ```
-
- 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
- ```
-
- 4. You are now ready to do your analysis by removing the `--build-only`
- option.
-
-
-
-
-
-## Script usage tips
-
-The `docker.sh` script introduced above has many options allowing certain
-customizations that you can see when running it with the `--help`
-option. The tips below are some of the more useful scenarios that we have
-encountered so far.
-
-### Docker image in a single file
-
-In case you want to store the image as a single file as backup or to move
-to another computer. For such cases, run the `docker.sh` script with the
-`--image-file` option (for example `--image-file=myproj.tar.gz`). After
-moving the file to the other system, run `docker.sh` with the same option.
-
-When the given file to `docker.sh` already exists, it will only be used for
-loading the environment. When it doesn't exist, the script will save the
-image into it.
-
-
-
-
-
-## Docker usage tips
-
-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
-valuable storage space. The storage of the cached files are usually orders
-of magnitudes larger than what you see in `docker image list`! So after
-doing your work, it is best to clean up all those files. If you feel you
-may need the image later, you can save it in a single file as mentioned
-above and delete all the un-necessary cached files. Afterwards, when you
-load the image, only that image will be present with nothing extra.
-
-The easiest and most powerful way to clean up everything in Docker is the
-two commands below. The first will close all open containers. The second
-will remove all stopped containers, all networks not used by at least one
-container, all images without at least one container associated to them,
-and all build cache.
-
-```shell
-docker ps -a -q | xargs docker rm
-docker system prune -a
-```
-
-If you only want to delete the existing used images, run the command
-below. But be careful that the cache is the largest storage consumer! So
-the command above is the solution if your OS's root partition is close to
-getting filled.
-
-```shell
-docker images -a -q | xargs docker rmi -f
-```
-
-
-### Preserving the state of an open container
-
-All interactive changes in a container will be deleted as soon as you exit
-it. This is a very good feature of Docker in general! If you want to make
-persistent changes, you should do it in the project's plain-text source and
-commit them into your project's online Git repository. But in certain
-situations, it is necessary to preserve the state of an interactive
-container. To do this, you need to `commit` the container (and thus save it
-as a Docker "image"). To do this, while the container is still running,
-open another terminal and run these commands:
-
-```shell
-# These two commands should be done in another terminal
-docker container list
-
-# Get the 'XXXXXXX' of your desired container from the first column above.
-# Give the new image a name by replacing 'NEW-IMAGE-NAME'.
-docker commit XXXXXXX NEW-IMAGE-NAME
-```
-
-
-### Interactive tests on built container
-
-If you later want to start a container with the built image and enter it in
-interactive mode (for example for temporary tests), run the following
-command. Just replace `NAME` with the same name you specified when building
-the project. You can always exit the container with the `exit` command
-(note that all your changes will be discarded once you exit, see below if
-you want to preserve your changes after you exit).
-
-```shell
-docker run -it NAME
-```
-
-
-### Copying files from the Docker image to host operating system
-
-Except for the mounted directories, the Docker environment's file system is
-indepenent of your host operating system. One easy way to copy files to and
-from an open container is to use the `docker cp` command (very similar to
-the shell's `cp` command).
-
-```shell
-docker cp CONTAINER:/file/path/within/container /host/path/target
-```
-
-
-
-## Copyright information
-
-This file is free software: you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation, either version 3 of the License, or (at your option)
-any later version.
-
-This file is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
-more details.
-
-You should have received a copy of the GNU General Public License along
-with this file. If not, see <https://www.gnu.org/licenses/>.