Git Product home page Git Product logo

apptainer-userdocs's Introduction

Apptainer

CI Go Reference

What is Apptainer?

Apptainer is an open source container platform designed to be simple, fast, and secure. Many container platforms are available, but Apptainer is designed for ease-of-use on shared systems and in high performance computing (HPC) environments. It features:

  • An immutable single-file container image format, supporting cryptographic signatures and encryption.
  • Integration over isolation by default. Easily make use of GPUs, high speed networks, parallel filesystems on a cluster or server.
  • Mobility of compute. The single file SIF container format is easy to transport and share.
  • A simple, effective security model. You are the same user inside a container as outside, and cannot gain additional privilege on the host system by default.

Apptainer is open source software, distributed under the BSD License.

Apptainer was formerly known as Singularity and is now a part of the Linux Foundation. When migrating from Singularity see the admin migration documentation and user compatibility documentation.

Check out talks about Apptainer and some use cases of Apptainer on our website.

Getting Started with Apptainer

To install Apptainer from source, see the installation instructions. For other installation options, see our guide.

System administrators can learn how to configure Apptainer, and get an overview of its architecture and security features in the administrator guide.

For users, see the user guide for details on how to run and build containers with Apptainer.

Contributing to Apptainer

Community contributions are always greatly appreciated. To start developing Apptainer, check out the guidelines for contributing.

Please note we have a code of conduct. Please follow it in all your interactions with the project members and users.

Our roadmap, other documents, and user/developer meeting information can be found in the apptainer community page.

We also welcome contributions to our user guide and admin guide.

Support

To get help with Apptainer, check out the Apptainer Help web page.

Go Version Compatibility

Apptainer aims to maintain support for the two most recent stable versions of Go. This corresponds to the Go Release Maintenance Policy and Security Policy, ensuring critical bug fixes and security patches are available for all supported language versions.

Citing Apptainer

Apptainer can be cited using its former name Singularity.

The Singularity software may be cited using our Zenodo DOI 10.5281/zenodo.1310023:

Singularity Developers (2021) Singularity. 10.5281/zenodo.1310023 https://doi.org/10.5281/zenodo.1310023

This is an 'all versions' DOI for referencing Singularity in a manner that is not version-specific. You may wish to reference the particular version of Singularity used in your work. Zenodo creates a unique DOI for each release, and these can be found in the 'Versions' sidebar on the Zenodo record page.

Please also consider citing the original publication describing Singularity:

Kurtzer GM, Sochat V, Bauer MW (2017) Singularity: Scientific containers for mobility of compute. PLoS ONE 12(5): e0177459. https://doi.org/10.1371/journal.pone.0177459

License

Unless otherwise noted, this project is licensed under a 3-clause BSD license found in the license file.

apptainer-userdocs's People

Contributors

alalazo avatar arangogutierrez avatar brianclemens avatar cclerget avatar dmitryilyin avatar donkirkby avatar drdaved avatar dtrudg avatar edytuk avatar godloved avatar gvallee avatar hall avatar ikaneshiro avatar jasonyangshadow avatar jmstover avatar jscook2345 avatar luator avatar multimeric avatar nathanweeks avatar pedroalvesbatista avatar phphavok avatar preminger avatar robertlugg avatar schebro avatar sushma-4 avatar sushma-98 avatar syl-ilumb avatar topherbuckley avatar wesleyacheng avatar westleyk avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

apptainer-userdocs's Issues

Fix epub output (I had to steal makefile from admindocs!)

Which Document page:

UserDoc page

Expected results:

Successful compile of the epub format

Actual results:

System complains of 'mconfig' being missing. Only way to fix was to copy the 'working' makefile from admin docs, and type

make epub

Need section on nesting

There's very little mention of nesting apptainer sessions in the docs. Add a section that talks about what can and can't be done and what is inherited by the inner session.

The "a" in "a {Project}" needs to be "an"

The "a" or "A" before "{Project}" needs to be "an" or "An" for correct English.

In order to keep our project-independence, I suggest adding two more replacements "{AProject}" and "{aProject}" to use for those cases.

Third-party references to replace

There are some third-party references, like Singularityware, that needs to be addressed as well replaced. For that, we should decide how Apptainer project will handle not only the references along the docs, but how to play around when it comes to operation side of those environments.

Recreate examples

There are some refs, like the one in the final section of GPU "examples" that we should recreate or find any substitute,

Document `/root` binding

According to @DrDaveD:

If the user inside the container is fake root, /root is the user’s home directory

In other words, there is an undocumented bind mount from /home/currentuser into /root (if I understand correctly), which is unrelated to the standard mount home behaviour.

Ideally this would be documented.

Document `%post -c` for running a different shell

Document using %post -c to run a different shell in a definition file. Does it work also on other sections? The document talks about using #! on the first line of some other sections; why is the %post section different?

Docs say credHelpers are unsupported

Which Document page:

On what page is the problem?

https://apptainer.org/docs/user/1.2/docker_and_oci.html#docker-cli-authentication

Expected results:

According to this github issue apptainer/singularity#2792 (comment) and my experience with apptainer version 1.2.2 credentials helpers DO work.

So the docs should mention that via something along the lines of:

Apptainer can read credentials from external Docker credential helpers defined under the credHelpers in ~/.docker/config.json.

Actual results:

The docs currently say:

Apptainer can only read credentials stored directly in ~/.docker/config.json. It cannot read credentials from external Docker credential helpers.

Sylabs originated content vs LICENSE copyright years

Hi all,

You have been bringing in some 2021 changes from the Sylabs documentation repositories, e.g. #33

Your LICENSE file is only listing copyright for Sylabs up to 2020, not 2021.

Please could you ensure on admindocs and userdocs that the copyright attribution matches the years for which you have brought content over from the Sylabs repositories.

Thanks!

Misleading intro to GPU support

The intro on the gpu.html page talks about using host libraries from old operating systems in containers "regardless" of the mismatch between host and container operating systems. There is a limit, however, if the libc library on the host and in the container are of very different vintage. The intro should be more clear about that limitation.

Import sylabs userdocs PRs

Remove references to "library" (and "shub"?)

Which Document page:

https://apptainer.org/docs/user/main/build_a_container.html?highlight=library

Expected results:

The apptainer user docs refer to the "library" container resource, which I understand to have been removed from apptainer. (The "shub" resource might also be removed.)

Actual results:

$ apptainer --version
apptainer version 1.0.0~rc.2-1.fc35

$ apptainer pull library://library/default/rockylinux
FATAL:   Unable to get library client configuration: remote has no library client

Fix sphinx warnings

Doing 'make html' or 'make epub' prints a bunch of warnings that are currently ignored. They can also be seen in CI runs. Fix the warnings.

Remove references to singularity versions

In order to greatly simplify the task of renaming to Apptainer, first remove all references to specific version numbers in this repository. Remove descriptions of older behavior, and for anything that describes behavior starting at a certain version number such as "Since version 3.6 ..." just remove that reference while leaving the rest of the behavior description because it still applies to the current version. Only leave the description of the current behavior; people who want to know the older behavior can look at the archived versions of the documentation.

Add note on setuid mode and apptainer instance list

Which Document page:

Apptainer User Guide - Instances - Running Services - Starting Instances

Expected results:

A note about requiring root on apptainer instance list if in setuid mode.

Actual results:

If apptainer is used in setuid mode, then instances, although started by $USER, are managed by root. Hence apptainer instance list will show an empty list. The current note on the document page linked above informs that:

"[...] if you use sudo to start an instance as root, you will need to use sudo for all commands managing that instance".

An additional note informing about the same requirement for setuid mode might help avoid confusion.

Rename doc filenames with singularity in them

Rename singularity_and_docker.rst to docker_and_oci.rst. Rename pygments_singularity.py to pygments_definition.py. There's a reference to cli/singularity.rst in Makefile but I don't think it is used anywhere, it can be deleted.

Readonly overlay images

Using Apptainer with --overlay on an MPI applications I got into the issue that apptainer is not able to start more than one instance with overlay reasonably.
I took a look into the userdocs but couldn't find any hint how to make overlay images mounted in read-only mode to get rid of this issue. Then I found the solution in apptainer/singularity#5577 to use --overlay overlay.img:ro.

Is using :ro a feature you do not want to support officially or is it simply missing in the user docs?
If it simply missing I can do a PR if I am aked for.

overlay documentation is wrong

Which Document page:

On what page is the problem?

https://apptainer.org/docs/user/main/persistent_overlays.html

or

https://github.com/apptainer/apptainer-userdocs/blob/main/persistent_overlays.rst

Expected results:

I would like to use overlay, but if I copy line 104, check the actual results. This is with apptainer version 1.0.3-1.el8

Actual results:

apptainer overlay create --fakeroot --size 1024 overlay.img
Error for command "create": unknown flag: --fakeroot

Options for create command:

      --create-dir strings   directory to create as part of the overlay layout
  -h, --help                 help for create
  -s, --size int             size of the EXT3 writable overlay in MiB (default 64)

Run 'apptainer --help' for more detailed usage information.

Set PATH to sif files

Which Document page:

Quck Start

Expected results:

I'm used to Docker, where there are no sif files to specify. One can just run docker run <name_of_image>. AFAIK, apptainer run requires the user to specify the path to the sif file.

All of the apptainer docs seem to assume that the sif file is in the user's working directory (e.g., apptainer run lolcow_latest.sif). There doesn't seem to be any clear docs on whether/how one can set a PATH-like variable that defines where apptainer run will look for sif files, if the sif file is not in the user's working directory. For example:

# set the location of 
APPTAINER_SIF_DIR=${HOME}/apptainer_sif_files/

# execute `apptainer run` from any location
apptainer run lolcow_latest.sif 

# lolcow_latest.sif is not in the working directory, so `apptainer run` looks in $APPTAINER_SIF_DIR

If this is not possible, it would help to explicitly state that one must always provide the path to the sif file... or create some sort of custom alias/function to set the directory where all sif files are located (if the specified sif file path does not exist).

Actual results:

It would be helpful if the user could organize all sif files in >=1 specific locations (repositories) and easily call any one of these sif files without the need to provide the full to the sif file or create a custom setup (e.g., an alias or function).

Suggestion: breakdown of each incremental feature that apptainer can use

This relates mostly to the "User Namespaces and Fakeroot" page. I found it fairly confusing because apptainer has so many modular features, each of which requires different levels of permissions and dependent software, that in turn enable different capabilities in apptainer. In theory this could be expanded to talk about FUSE filesystems etc as well.

The motivation for this is helping sysadmins determine which features they can enable "for free" (ie without security risks) e.g. fakeroot, and which ones can be skipped. e.g. the setuid flag is possibly not needed on newer Linux kernels.

I think it might be helpful to present this information as a collection of paragraphs, one for each capability, that describe this information in a structure way. Now I don't actually have all the info to write this because I still don't fully understand everything, but here's an example:


Name: Fakeroot binary
How to Enable Install fakeroot command (can be compiled from scratch or installed as a package)
Required Privileges: None (any user can compile fakeroot)
Security risks: None
Enables: The use of sudo inside apptainer, for example sudo apt install or sudo make install. This allows the use of many standard installation mechanisms, which can make building containers much easier

Name: Setuid Flag
How to Enable Install apptainer-suid package instead of apptainer
Required Privileges: Root
Security risks: Potentially
Enables: Allows apptainer to run on old Linux kernels that don't support user namespaces

Name: subuid Mappings
How to Enable: The root user can customize /etc/subuid and /etc/subgid
Required Privileges: Root
Security risks: No (?)
Enables: Allows apptainer to map multiple users inside the container to multiple users outside the container. This extends the default behaviour whereby the running user outside the container is mapped to root inside the container.

Google Group refs

Docs has some references to Google Group. In the upcoming meetings or in chat, decide what to do on this regard.

[quick_start] INSTALL.md link is broken?

Which Document page:

https://apptainer.org/docs/user/1.1/quick_start.html

Expected results:

I'd expect to see it link to
https://github.com/apptainer/apptainer/blob/release-1.1/INSTALL.md

Actual results:

By means of this code:

To install from source, follow the instructions in the `INSTALL.md
<https://github.com/{orgrepo}/blob/{repobranch}/INSTALL.md>`_
on github.

It actually links to
https://github.com/apptainer/apptainer/blob/1.1/INSTALL.md
But that page (branch) does not exist

I notice that this repo uses 1.0, 1.1 for branch names - maybe it should use same convention, release-1.0, release-1.1?

While updating automated / narrowly scoped scripts
EricCousineau-TRI/repro@f50c60d

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.