Giter Club home page Giter Club logo

apptainer-admindocs'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-admindocs's People

Contributors

afbjorklund avatar brianclemens avatar c1au6i0 avatar cclerget avatar darakian avatar dcwsu avatar dmitryilyin avatar drdaved avatar drmeerkat avatar dtrudg avatar edytuk avatar foggymtndrifter avatar gmkurtzer avatar godloved avatar ikaneshiro avatar jasonyangshadow avatar jmstover avatar jonasrosland avatar jscook2345 avatar kmuriki avatar metuchen avatar naufraghi avatar panda1100 avatar pedroalvesbatista avatar siko1056 avatar smsaladi avatar sushma-4 avatar sushma-98 avatar wood-chris avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

apptainer-admindocs's Issues

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.

List known system incompatibilities

Document known system incompatibilities:

  • hidepid=1 or hidepid=2 option on /proc mount are known to be incompatible with instances and setuid workflow
  • running apptainer inside "weak" chroot is not permitted

Unprivileged installation script currently fails

Which Document page:

https://apptainer.org/docs/admin/main/installation.html#install-unprivileged-from-pre-built-binaries

Expected results:

The install script will succesfully install apptainer, if the privileges and dependencies necessary are met.

Actual results:

As of writing linux-mirrors.fnal.gov is reachable over HTTP but not HTTPS. This results in the installation script failing:

# curl -s https://raw.githubusercontent.com/apptainer/apptainer/main/tools/install-unprivileged.sh | bash -s /opt/apptainer
Could not find apptainer version from https://linux-mirrors.fnal.gov/linux/fedora/epel/7/x86_64/Packages/a

This can be worked around currently by replacing https://linux-mirrors.fnal.gov with http://linux-mirrors.fnal.gov.

Remove references to `v3` version of Singularity

We need to reference a version in the locations there v3 was used because it was used to differentiate features from the v2 line of Singularity which is not relevant to the decimation of apptainer at this point.

User Namespaces & Fakeroot - Starting range of UID is higher than end?

Which Document page:

On what page is the problem?

https://apptainer.org/docs/admin/latest/user_namespace.html#basics

Expected results:

What are you expecting to see?

For user foo an entry in /etc/subuid might be:

foo:10000:65536

where foo is the username, 10000 is the start of the UID range that can be used by foo in a user namespace uid mapping, and 65536 number of UIDs available for mapping.

Same for /etc/subgid:

foo:10000:65536

Actual results:

What is the problem, what's misspelled, or what's missing?

Isn't 100000 a typo? I assume its suppose to be 10000.

For user foo an entry in /etc/subuid might be:

foo:100000:65536

where foo is the username, 100000 is the start of the UID range that can be used by foo in a user namespace uid mapping, and 65536 number of UIDs available for mapping.

Same for /etc/subgid:

foo:100000:65536


Admin docs dont explain how Apptainer works anywhere

Incoming perspective: A few months back I did some preliminary work on introducing Singularity into one of my environments, but I haven't touched it since then and I've forgotten some things.

https://apptainer.org/docs/admin/latest/admin_quickstart.html#architecture-of-apptainer , i.e.

Architecture of {Project}
gives some design goals for Singularity, but I haven't been able to find anything anywhere explaining how Singularity/Apptainer is actually supposed to work and how it compares technologically to "standard" namespaces based containers. I've only found a couple instances of the word chroot in the documentation but none of them are about explaining Apptainers mechanisms.

This would also be helpful because my other major use case is being able to point someone else to something summarizing how the technology is supposed to work.

There is a very old FAQ mentioned here that I haven't been able to find any existing instances of https://stackoverflow.com/questions/45169598/chroot-vs-singularity -> http://singularity.lbl.gov/faq#how-is-singularity-different-from-chroot , the question just doesn't seem to exist anywhere.

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.