dahak-metagenomics / dahak-taco

🌮 Taco is an experimental command line interface for dahak workflows. https://dahak-metagenomics.github.io/dahak-taco
BSD 3-Clause "New" or "Revised" License
1 stars 0 forks source link

Singularity/docker directives #16

Closed charlesreid1 closed 6 years ago

charlesreid1 commented 6 years ago

Unwrap some of the mystery surrounding the singularity and docker directives so we have a better idea of how to troubleshoot this on HPC platforms.

charlesreid1 commented 6 years ago

To replicate a restricted HPC environment on AWS: install docker system-wide, create non-root/non-docker-group user, attempt to run workflows with singularity

brooksph commented 6 years ago

Is there an advantage to doing this, docker install? The end user does not have docker installed and we told them they would not have to have it installed to run the workflows.

charlesreid1 commented 6 years ago

I thought singularity was a non-root layer on top of docker. If it is its own layer entirely, then yes, scratch the install docker step.

charlesreid1 commented 6 years ago

Following up on this -

from the admin guide - installation steps in the singularity documentation,

NOTE: The make install above must be run as root to have Singularity properly installed. Failure to install as root will cause Singularity to not function properly or have limited functionality when run by a non-root user.

The guide also clarifies that singularity does not rely on Docker. So, on HPC, the Singularity workflow looks like this:

  1. HPC administrator installs singularity and makes it executable by everyone
  2. Users can run singularity, and they can run containers without Docker and without root access.

To replicate this setup on AWS for testing singularity, we need a singularity installation script run by root (already in dahak-yeti, but was being run by user), and we need to run taco workflows as a regular user (already doing that). Also, we should not install Docker (currently, we always install docker). Probably need to create a second cloud init script, one for docker and one for singularity.