Skip to content

Singularity Global Client

Singularity Global Client (sregistry command) is software for managing images used in Singularity. It can also be used to get images from the registry.

Usage

The sregistry command can be used with ABCI by performing the following procedure in advance.

[username@es1 ~]$ module load singularitypro python/3.6/3.6.12 sregistry-cli
[username@es1 ~]$ sregistry --help
usage: sregistry [-h] [--debug] [--quiet] [--version]
                 {version,backend,shell,images,inspect,get,add,mv,rename,rm,search,build,push,share,pull,labels,delete}
                 ...

Singularity Registry tools

optional arguments:
  -h, --help            show this help message and exit
  --debug               use verbose logging to debug.
  --quiet               suppress additional output.
  --version             suppress additional output.

actions:
  actions for Singularity Registry Global Client

  {version,backend,shell,images,inspect,get,add,mv,rename,rm,search,build,push,share,pull,labels,delete}
                        sregistry actions
    version             show software version
    backend             list, remove, or activate a backend.
    shell               shell into a Python session with a client.
    images              list local images, optionally with query
    inspect             inspect an image in your database
    get                 get an image path from your storage
    add                 add an image to local storage
    mv                  move an image and update database
    rename              rename an image in storage
    rm                  remove an image from the local database
    search              search remote images
    build               build an image using a remote.
    push                push one or more images to a registry
    share               share a remote image
    pull                pull an image from a registry
    labels              query for labels
    delete              delete an image from a remote.

Singularity Global Client setting procedure and supported actions differ depending on the registry used. For details, please refer to the page about the registry you want to use from client tutorials.

Example

As an execution example, the following shows the procedure for pull the latest-gpu tag image from myrepos/tensorflow repository on Amazon Elastic Container Registry (ECR) and saving it as a mytensorflow.simg file in the current directory.

Note

This procedure assumes that you have completed Register access token in AWS CLI.

Load modules necessary for using Singularity Global Client and Amazon ECR.

[username@es1 ~]$ module load singularitypro python/3.6/3.6.12 sregistry-cli aws-cli

Set up to use Amazon ECR. Check <registryId> and <region> with aws ecr describe-repositories command and set each to environment variable.

[username@es1 ~]$ aws ecr describe-repositories --repository-name myrepos/tensorflow
{
    "repositories": [
        {
            "repositoryArn": "arn:aws:ecr:<region>:<registryId>:repository/myrepos/tensorflow",
            "registryId": "<registryId>",
            "repositoryName": "myrepos/tensorflow",
            "repositoryUri": "<registryId>.dkr.ecr.<region>.amazonaws.com/myrepos/tensorflow",
            "createdAt": 1572261978.0,
            "imageTagMutability": "MUTABLE"
        }
    ]
}
[username@es1 ~]$ export SREGISTRY_AWS_ID=<registryId>
[username@es1 ~]$ export SREGISTRY_AWS_ZONE=<region>

Get the image and save it as a mytensorflow.simg file. From the next time, you only need to load the module.

[username@es1 ~]$ sregistry pull --name mytensorflow.simg --no-cache aws://myrepos/tensorflow:latest-gpu
  • The URI starting with aws:// specifies the repository name tagged as follows. aws://<repositoryName>:<imageTag>

Execute pulled image as interactive job.

[username@es1 ~]$ qrsh -g grpname -l rt_F=1 -l h_rt=1:00:00
[username@g0001 ~]$ module load singularitypro
[username@g0001 ~]$ singularity shell --nv ./mytensorflow.simg
Singularity: Invoking an interactive shell within container...

Singularity mytensorflow.simg:~>