Cloud Library

This page will cover how to use the Singularity Cloud Services (SCS) with Singularity.

Overview

The Cloud Library is the place to push your containers to the cloud so other users can download, verify, and use the containers.

Sylabs also provides a Remote Builder, used to build your containers containers without root access within the cloud.

Make an Account

Making an account is easy, and straightforward:

  1. Go to: https://cloud.sylabs.io/library.
  2. Click “Sign in to Sylabs” (top right corner).
  3. Select your method to sign in, with Google, GitHub, GitLab, or Microsoft.
  4. Type your passwords, and that’s it!

Creating a Access token

Access tokens for pushing a container, and remote builder.

To generate a access token, do the following steps:

  1. Go to: https://cloud.sylabs.io/library.
  2. Click the top right button with your username.
  3. From the dropdown menu, click “Access Tokens”.
  4. Enter a token name, like my token for linux ws, then click “Create a new token”.
  5. Copy the token and paste it to ~/.singularity/sylabs-token.

Now that you have your token, you are ready to push your container!

Pushing a Container

The singularity push command will push a container to the container library with the given URL. Here’s an example of a typical push command:

$ singularity push my-container.sif library://your-name/project-dir/my-container:latest

The :latest is the container tag. Tags are used to have different version of the same container.

Note

When pushing your container, theres no need to add a .sif (Singularity Image Format) to the end of the container name, (like on your local machine), because all containers on the library are SIF containers.

Let’s assume you have your container (v1.0.1), and you want to push that container without deleting your :latest container, then you can add a version tag to that container, like so:

$ singularity push my-container.sif library://your-name/project-dir/my-container:1.0.1

You can download the container with that tag by replacing the :latest, with the tagged container you want to download.

Pulling a container

The singularity pull command will download a container from the Library (library://), Docker Hub (docker://), and also Shub (shub://).

Note

When pulling from Docker, the container will automatically be converted to a SIF (Singularity Image Format) container.

Here’s a typical pull command:

$ singularity pull file-out.sif library://alpine:latest

# or pull from docker:

$ singularity pull file-out.sif docker://alpine:latest

Note

If there’s no tag after the container name, Singularity automatically will pull the container with the :latest tag.

To pull a container with a specific tag, just add the tag to the library URL:

$ singularity pull file-out.sif library://alpine:3.8

Of course, you can pull your own containers. Here’s what that will look like:

Pulling your own container

Pulling your own container is just like pulling from Github, Docker, etc…

$ singularity pull out-file.sif library://your-name/project-dir/my-container:latest

# or use a different tag:

$ singularity pull out-file.sif library://your-name/project-dir/my-container:1.0.1

Note

You don’t have to specify a output file, one will be created automatically, but it’s good practice to always specify your output file.

Verify/Sign your Container

Verify containers that you pull from the library, ensuring they are bit-for-bit reproductions of the original image.

Check out this page on how to: verify a container, making PGP key, and sign your own containers.

Searching the Library for Containers

When it comes to searching the library, you could always go to: https://cloud.sylabs.io/library and search from there through the web GUI. Or you can use singularity search <container/user>, this will search the library for the <container/user>.

Remote Builder

The remote builder service can build your container in the cloud removing the requirement for root access.

Here’s a typical remote build command:

$ singularity build --remote file-out.sif docker://ubuntu:18.04

Building from a definition file:

This is our definition file. Let’s call it ubuntu.def:

bootstrap: library
from: ubuntu:18.04

%runscript
    echo "hello world from ubuntu container!"

Now, to build the container, use the --remote flag, and without sudo:

$ singularity build --remote ubuntu.sif ubuntu.def

Note

Make sure you have a access token, otherwise the build will fail.

After building, you can test your container like so:

$ ./ubuntu.sif
hello world from ubuntu container!

You can also use the web GUI to build containers remotely. First, go to https://cloud.sylabs.io/builder (make sure you are signed in). Then you can copy and paste, upload, or type your definition file. When you are finished, click build. Then you can download the container with the URL.