Local Install
To install from the Github repository:
git clone https://www.github.com/singularityhub/sregistry-cli.git
cd sregistry-cli
python setup.py install
And you can also install from pip:
# Client and Database
pip install sregistry[all]
# Client only
pip install sregistry[all-basic]
Given that the current endpoints are limited, you will do ok with the above method. However, when the time comes to install specific modules, you would do that by specifying the ones you want, e.g.,
pip install -e .[myclient]
To install from pip (granted that @vsoch has updated, this is likely only for major versions, and it’s usually best during development to install from the repository).
pip install sregistry
or for a particular extra client:
pip install sregistry[myclient]
Docker
You can use Singularity Registry Global clients via Docker. Importantly, you need to
run the commands with the --privileged
flag.
$ docker run --privileged quay.io/vanessa/sregistry-cli pull shub://vsoch/hello-world
If you need to build the container locally:
$ docker build -t quay.io/vanessa/sregistry-cli .
Singularity
Singularity no longer supports running Singularity inside Singularity, and so some commands will not work as desired. For example:
./sregistry.simg pull shub://vsoch/hello-world
[client|hub] [database|sqlite:////home/vanessa/.singularity/sregistry.db]
Progress |===================================| 100.0%
2.5.1-master.gd6e81547
ERROR : Singularity is not running with appropriate privileges!
ERROR : Check installation path is not mounted with 'nosuid', and/or consult manual.
ABORT : Retval = 255
ERROR Return Code 255: ("\x1b[91mERROR : Singularity is not running with appropriate privileges!\n\x1b[0m\x1b[91mERROR : Check installation path is not mounted with 'nosuid', and/or consult manual.\n\x1b[0m\x1b[31mABORT : Retval = 255\n\x1b[0m",)
[container][update] vsoch/hello-world:latest@ed9755a0871f04db3e14971bec56a33f
Success! /home/vanessa/.singularity/shub/vsoch-hello-world:latest@ed9755a0871f04db3e14971bec56a33f.simg
You could run with sudo, but that might defeat the purpose. Most functions should work, and missing is adding the inspection of the container to the database. It can, of course, easily be obtained by inspecting the container image directly.
To activate a particular client endpoint, thanks to the Standard Container Integration Format
you can just use an --app
flag instead:
$ singularity run --app registry sregistry-cli
Clients Available
Singularity Registry Global Client is developed to give you maximum flexibility to install only what you need. For this, you have many different options for installing the software. if you use the above method, you will install the full client and storage, meaning that you can push and pull images to many different clients (Google vs. Singularity Registry) and you can keep a local database file for keeping track of your images. However, it might be that you want to install dependencies for just one client. Remember for all of the pip commands below, you can install with a local repository, or remote.
Install all clients
# Local repository
pip install -e .[all]
# From pypi
pip install sregistry[all]
# Local repository
pip install -e .[myclient]
# From pypi
pip install sregistry[myclient]
And here are your options.
Clients and Storage
The first set includes sqlalchemy
so that you can manage a local database of images across clients.
# Singularity Registry
pip install sregistry[registry]
# Google Storage
pip install sregistry[google-storage]
# Google Drive
pip install sregistry[google-drive]
Clients Only
These do not include sqlalchemy
, meaning you can push and pull, but that’s it. There is no database to add records to or store metadata in.
# Singularity Registry
pip install sregistry[registry-basic]
# Google Storage
pip install sregistry[google-storage-basic]
# Google Drive
pip install sregistry[google-drive-basic]
Clients for Singularity Hub and Nvidia are not detailed here as they don’t require additional library dependencies.